2015-08-03 10 views
5

Jeśli właściwości log4j mają wielu nadawców, to w Javie mogę się upewnić, że dzienniki są zapisywane w określonym pliku.W języku java, jak pisać dzienniki do konkretnego pliku dostarczającego log4j?

log4j.rootLogger=INFO,out 

log4j.appender.SUCCESS_FILE=org.apache.log4j.FileAppender 
log4j.appender.SUCCESS_FILE.File=${dd.log.dir}/success.log 

log4j.appender.VALID_FILE=org.apache.log4j.FileAppender 
log4j.appender.VALID_FILE.File=${dd.log.dir}/valid_error.log 

log4j.appender.TEMP_FILE=org.apache.log4j.FileAppender 
log4j.appender.TEMP_FILE.File=${dd.log.dir}/Temp_error.tmp_log 

W klasie Java, co mogę zrobić, aby napisać kilka wiadomości do, powiedzmy, SUCCESS_FILE i niektóre wiadomości do TEMP_FILE

Logger log = Logger.getLogger(Test.class); 
log.debug("This message should go to SUCCESS_FILE"); 
log.debug("This message should go to TEMP_FILE"); 
+0

Musisz filtrować dane. Sprawdź http://stackoverflow.com/a/13408057/4807777 –

+0

Zwróć uwagę, że niektóre wcześniejsze wersje mogą nie obsługiwać filtrów w konfiguracji plików właściwości (ale te w formacie xml). –

Odpowiedz

3

To może pomóc: -

log4j.appender.successLog=org.apache.log4j.FileAppender 
log4j.appender.successLog.File=${dd.log.dir}/success.log 

log4j.appender.tempLog=org.apache.log4j.FileAppender 
log4j.appender.tempLog.File=${dd.log.dir}/Temp_error.tmp_log 

log4j.category.successLogger=INFO, successLog 
log4j.additivity.successLogger=false 

log4j.category.tempLogger=INFO, tempLog 
log4j.additivity.tempLogger=false 

dostęp im podobne: -

static final Logger successLog = Logger.getLogger("successLogger"); 
static final Logger tempLog = Logger.getLogger("tempLogger"); 
+0

Dzięki za odpowiedź :) Właśnie stwierdziłem, że zamiast "log4j.category.xx" i "log4j.additivity.xx", możemy po prostu użyć "log4j.logger.xx = INFO, fileAppenderName" i uzyskać dostęp do rejestratora za pomocą w taki sam sposób, o jakim wspomniałeś. –

0

Korzystanie z konfiguracji XML, takiej jak @Nio, to:

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

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

    <appender name="successLog" class="org.apache.log4j.FileAppender"> 
     <param name="file" value="${dd.log.dir}/success.log" /> 
     <param name="append" value="false" /> 
     <param name="Threshold" value="INFO" /> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="[%p] %d %c %M - %m%n" /> 
     </layout> 
    </appender> 

    <appender name="tempLog" class="org.apache.log4j.FileAppender"> 
     <param name="file" value="${dd.log.dir}/Temp_error.tmp_log" /> 
     <param name="append" value="false" /> 
     <param name="append" value="false" /> 
     <param name="Threshold" value="INFO" /> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="[%p] %d %c %M - %m%n" /> 
     </layout> 
    </appender> 

    <logger name="successLogger" additivity="false"> 
     <level value="INFO"/> 
     <appender-ref ref="successLog"/> 
    </logger> 

    <logger name="tempLogger" additivity="false"> 
     <level value="INFO"/> 
     <appender-ref ref="tempLog"/> 
    </logger> 

</log4j:configuration>