2016-04-11 5 views
0

Ich benutze Apache log4j. Ich möchte 2 Appender hinzufügen. einer für irgendeinen Zweck und der andere für andere. Der Log-Inhalt wird nicht an beide Appender gesendet. Ich habe 2 Appender file1 und file2. dann Logger für Datei1 druckt den Datensatz in Datei1.log. andLogger für Datei2 druckt den Datensatz in Datei2.log.Log4j mehrere Appender unabhängig

+0

überprüfen Sie diese http://stackoverflow.com/questions/9652032/how-can-i-create-2-separate-log-files-with-one-log4j-config-file – Shettyh

Antwort

2

können Sie diesen Schnipsel Code verwenden in 2-Datei zu protokollieren:

log4j.rootLogger=INFO 

log4j.appender.debugLog=org.apache.log4j.FileAppender 
log4j.appender.debugLog.File=logs/debug.log 
.... 

log4j.appender.reportsLog=org.apache.log4j.FileAppender 
log4j.appender.reportsLog.File=logs/reports.log 
.... 

log4j.category.debugLogger=TRACE, debugLog 
log4j.additivity.debugLogger=false 

log4j.category.reportsLogger=DEBUG, reportsLog 
log4j.additivity.reportsLogger=false 

Und diese verwenden, wenn Sie anrufen müssen log:

static final Logger debugLog = Logger.getLogger("debugLogger"); 
static final Logger resultLog = Logger.getLogger("reportsLogger"); 

Auch wenn Sie bereits log haben und nicht wollen ändere die Log-Init. Log4j unterstützt Sie bei der Festlegung des Pakets oder des vollständigen Qualitätsmusters.

log4j.rootLogger=DEBUG, CONSOLE 

# Each package has different appender name  
log4j.logger.com.mycorp.project.first=DEBUG, FIRST 
log4j.logger.com.mycorp.project.second=DEBUG, SECOND 

log4j.appender.FIRST=org.apache.log4j.RollingFileAppender 
log4j.appender.FIRST.File=./first.log 
log4j.appender.FIRST.layout=org.apache.log4j.PatternLayout 

log4j.appender.SECOND=org.apache.log4j.RollingFileAppender 
log4j.appender.SECOND.File=./second.log 
log4j.appender.SECOND.layout=org.apache.log4j.PatternLayout 
+0

ist es möglich, dass auf demselben Paket/java-Datei, geht das Info-Log auf file1 und das Fehlerprotokoll auf Datei 2? – Ankit

1

Zwei Appen wie unten erstellen:

public static final Logger loggerOne= LoggerFactory.getLogger("com.mylogger.loggerOne"); 
    public static final Logger loggerTwo= LoggerFactory.getLogger("com.mylogger.loggerTwo"); 

konfigurieren Dann Datei Ihre Log4j.properties wie unten:

log4j.rootLogger=INFO,file ,console 

log4j.logger.com.mylogger.loggerOne=INFO,firstLog 
log4j.appender.firstLog.File=C:/Imran/logs/firstLog.log 
log4j.appender.firstLog.DatePattern='.'yyyy-MM-dd 
log4j.appender.firstLog=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.firstLog.layout=org.apache.log4j.PatternLayout 
log4j.appender.firstLog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L -%m%n 

log4j.logger.com.mylogger.loggerTwo=INFO,secondLog 
log4j.appender.secondLog.File=C:/Imran/logs/secondLog.log 
log4j.appender.secondLog.DatePattern='.'yyyy-MM-dd 
log4j.appender.secondLog=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.secondLog.layout=org.apache.log4j.PatternLayout 
log4j.appender.secondLog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L -%m%n 

Verwenden loggerOne.info() und loggerTwo.info() in Sie Code zum Drucken in der Datei firstLog.log bzw. secondLog.log.

+0

Mein Problem ist gelöst Danke, lieber !!! –

Verwandte Themen