2012-12-18 35 views
11

İz ve hata ayıklama günlükleri yararlı olabilir, ancak inşa sırasında ben bu satırları oldukça rahatsız edici bulmak ve maven veya diğer yapı araçları tarafından basılmış raporu obfuscating.devre dışı bırakılması Log4J günlükleri

log4j maven veya proje dosyaları üzerinde değişiklik gerektirmez şeyle kullanmak -Dlog4j.rootLogger=OFF gibi bir sistem özelliği onurlandıran olması güzel olurdu. Ben -Dlog4j.configuration=alternateconfig.props belirtebilirsiniz biliyorum ama birileri az manuel müdahale ile inşa işlemi sırasında günlüğü devre dışı bırakmak için daha akıllı bir yol bulmuş öğrenmek için buraya soruyorum. Yani log4j'yi veya diğer akıllı çözümleri devre dışı bırakan arayan olarak maven algılayan bazı java sınıfı.

Herhangi bir ipucu?

Notlar:

[1]: zaten denedim ve işe yaramazsa.

[2]: bu oldukça iyi, ama

+1

2 * yapar * iş, sen surefire JVM seçenekleri güncelleyebilir ve en iyi çözümdür IMHO umut verici görünüyor – artbristol

+0

@artbristol. Yani, sadece maven yapısını etkileyen bir seçenek olurdu, tam da aradığım şey bu. Bu olasılığı en kısa zamanda kontrol edeceğim. –

cevap

15

bu SureFire yapılandırılabilir. aşağıdaki ayarlarla hile dosyasını ${basedir}/etc/log4j-silent.properties gelmez sahip

 <plugin> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.5</version> 
      <configuration> 
       <forkMode>always</forkMode> 
       <systemPropertyVariables> 
        <log4j.configuration>file:${basedir}/etc/log4j-silent.properties</log4j.configuration> 
       </systemPropertyVariables> 
      </configuration> 
     </plugin> 

Sonra: O pom.xml'Bu bu şekilde yapılabilir testi çalışır sırasında

log4j.rootLogger=OFF 

log4j tamamen devre dışı bırakıldığı maven ve her şey normalde IDE'de çalışıyor. Daha iyi bir çözüm, ek yapılandırma dosyasına sahip olmamak; ama şu ana kadar bulamıyor.

+2

Test/resources/dizinimde log4j.properties dosyası yerleştirerek sessiz logger yönteminizi kullandım rootLogger = KAPALI satırı içinde. Testlerin sınıf yoluna kopyalanır ve alınır. Logger yapılandırması yok ve hiçbir logger çıkışı yok :) – Jazzepi

7

hiçbir appender bir test log4j yapılandırma dosyasını belirtin (belki güzelliğinde atlama bunu) maven ile iyi iş gibi görünmüyor.

Örneğin, src/main/resources'da bir log4j.properties varsa, src/test/resouces'a kopyalayın ve ya ekleyiciyi kaldırın ya da günlük düzeyini ölümcül olarak ayarlayın.

(soru üzerine açıklama) @artbristol tarafından açıklandığı üzere
+2

IDE'de de kaydı devre dışı bırakabilir (IntelliJ IDEA'da yapar, bunun yerine tutulma yerine geçmediğini varsayalım) –

2

önceki cevaplara dayanarak, kullanın:

<plugin> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.5</version> 
    <configuration> 
     <forkMode>always</forkMode> 
     <argLine>-Dlog4j.configuration=</argLine> 
    </configuration> 
</plugin> 

Maven çıkış başlatıldı değil log4j ilgili bir uyarı gösterir, ancak öyle görünüyor ki başka işe.

İlgili konular