2009-06-17 12 views
6

Log4j'de, logger.error ("") ve logger.debug ("") farklı çıkış düzenleri içermesinin bir yolu var mı?Hata ayıklama ve hata için farklı log4j düzeni?

Her ikisi de uygulama performansını yavaşlatan yöntem adlarını ve satır numaralarını dahil etmek hataların olmasını isterim.

DÜZENLEME:

apache-log4j-ekstralar ekledikten sonra, aşağıdaki yapılandırma dosyası çalışır.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" > 

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 

    <appender name="WARNINGS" class="org.apache.log4j.DailyRollingFileAppender"> 
     <param name="File" value="warnings.log"/> 
     <param name="DatePattern" value="'.'yyyy-MM-dd"/> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d{yyyy-MMM-dd HH:mm:ss} %-5p %c - %m%n%n"/> 
     </layout> 
     <filter class="org.apache.log4j.filter.LevelRangeFilter"> 
      <param name="LevelMin" value="DEBUG"/> 
      <param name="LevelMax" value="WARN"/> 
     </filter> 
    </appender> 

    <appender name="ERRORS" class="org.apache.log4j.DailyRollingFileAppender"> 
     <param name="File" value="errors.log"/> 
     <param name="DatePattern" value="'.'yyyy-MM-dd"/> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <!-- %M for method name , %L for line number --> 
      <param name="ConversionPattern" value="%d{yyyy-MMM-dd HH:mm:ss} %-5p %c %M %L - %m%n%n"/> 
     </layout> 
     <filter class="org.apache.log4j.filter.LevelRangeFilter"> 
      <param name="LevelMin" value="ERROR"/> 
      <param name="LevelMax" value="FATAL"/> 
     </filter> 
    </appender> 

    <logger name="com.foo.bar"> 
     <appender-ref ref="WARNINGS"/> 
     <appender-ref ref="ERRORS"/> 
    </logger> 

</log4j:configuration> 

Bu kod

// goes to errors.txt 
    log.error("error"); 
//goes to warnings.txt 
    log.warn("warn"); 
+1

ConversionPattern'inizde% d {ISO8601} 'i kullanmak isteyebilirsiniz, bu log4j'nin kolaylık ve hız kaygısı için sağladığı optimize edilmiş bir zaman formatıdır. – Gandalf

+0

@Gandalf teşekkürler. Deneyecek. – sal

cevap

9

Log4j.xml yapılandırmanızda, her biri LevelMatchFilter kullanarak ve her biri ayrı bir desen çıktısı olan iki ek oluşturabilirsiniz.

+0

Bunu beğendim. Bana gösterebileceğin bir örnek var mı? – sal

+0

LevelMatchFilter bağlantısı artık çalışmıyor – Kairan

1

isterim sadece kurulum iki farklı kaydediciler sınamak için kullanıldı. Biri ERROR ve bir tanesi DEBUG. Daha sonra farklı çıkış düzenlerini kolayca kurabilir ve sadece ERROR.error veya DEBUG.debug'u arayabilirsiniz.

+3

Kötü tavsiye. Şüphelenmeyen kullanıcılar, oldukça talihsiz olan tavsiyelerinize uyabilir. – Ceki

+0

Eğer hissediyorsanız lütfen bana nedenini söyleyin - sadece körü körüne bir şey söylemeyin, daha iyi bir tavsiye vermeden kötü bir tavsiye. Neden bu talihsiz olur? – Gandalf

+0

Daha iyi tavsiyeler zaten "Alex B" tarafından verildi. ERROR.error veya DEBUG.debug çağırmak oldukça aptal. Log4j üzerindeki belgeleri okuyun veya bir ipucu alın. – Ceki