2013-08-28 7 views
7

Ich erhalte doppelte Einträge in meiner Protokolldatei. Habe meine log4j.properties unten angehängt.Doppelte Protokolleinträge log4j

log4j.properties:

############################################################################### 
# log4j Configuration file: Defines following loggers 
# SL - Standard root Logger 
# EL - Error Logger with the threshold level explicitly set to ERROR 
# DL - Data base logger - to log db queries separately 
# BL - Batch logger 
############################################################################### 

log4j.rootLogger=TRACE,SL,EL 
log4j.rootLogger.additivity=false 

#Standard Log 
log4j.appender.SL=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.SL.File=${log.file}/log.log 
log4j.appender.SL.layout=org.apache.log4j.PatternLayout 
log4j.appender.SL.layout.ConversionPattern=[%5p] [%t %d{HH:mm:ss:SSS}] [%X{sessionId}:%X{hostId}:%X{userId}] (%F:%M:%L) %m%n 

#Error Log 
log4j.appender.EL=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.EL.File=${log.file}/error.log 
log4j.appender.EL.layout=org.apache.log4j.PatternLayout 
log4j.appender.EL.Threshold=ERROR 
log4j.appender.EL.layout.ConversionPattern=[%5p] [%t %d{HH:mm:ss:SSS}] [%X{sessionId}:%X{hostId}:%X{userId}] (%F:%M:%L) %m%n 

# Database Log 
log4j.logger.org.springframework.jdbc=DEBUG,DL 

log4j.appender.DL=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.DL.File=${log.file}/db.log 
log4j.appender.DL.layout=org.apache.log4j.PatternLayout 
log4j.appender.DL.layout.ConversionPattern=[%5p] [%t %d{HH:mm:ss:SSS}] [%X{sessionId}:%X{hostId}:%X{userId}] (%F:%M:%L) %m%n 

#Forecast Log 
log4j.appender.MAPS_FC=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.MAPS_FC.File=${log.file}/forecast.log 
log4j.appender.MAPS_FC.layout=org.apache.log4j.PatternLayout 
log4j.appender.MAPS_FC.layout.ConversionPattern=[%5p] [%t %d{HH:mm:ss:SSS}] [%X{sessionId}:%X{hostId}:%X{userId}] (%F:%M:%L) %m%n 

#Logger configuration 
log4j.logger.com.singaporeair.maps=TRACE,SL,EL 
log4j.logger.com.singaporeair.maps.app.service.impl.gantt=DEBUG,MAPS_FC 
log4j.logger.com.singaporeair.maps.app.dao.impl.gantt=DEBUG,MAPS_FC 

Erste dulicate Einträge in log.log Datei oben konfiguriert.

Log-Extrakt:

[ INFO] [SimpleAsyncTaskExecutor-9 19:04:00:800] [::] (AppProfiler.java:doProfile:69) Processing Time(ms): BaseDAOImpl: getBatchDetails: 63 
[ INFO] [SimpleAsyncTaskExecutor-9 19:04:00:800] [::] (AppProfiler.java:doProfile:69) Processing Time(ms): BaseDAOImpl: getBatchDetails: 63 
[ INFO] [SimpleAsyncTaskExecutor-9 19:04:00:800] [::] (AppProfiler.java:doProfile:71) BaseDAOImpl: getBatchDetails: OUT 
[ INFO] [SimpleAsyncTaskExecutor-9 19:04:00:800] [::] (AppProfiler.java:doProfile:71) BaseDAOImpl: getBatchDetails: OUT 

Pls helfen

+0

Bezieht sich dies auf die Logger-Additivität? –

+0

Nein .. Ich habe gerade versucht, es falsch zu machen. Aber immer noch bekomme ich Duplikate .. – prabu

+1

YOu gemein in root? Es ist nicht vererbt, Sie müssen es für jedes Kind Logger tun –

Antwort

0

com.singaporeair.maps ist eine Obermenge von com.singaporeair.maps.app.service.impl.gantt und com.singaporeair.maps.app.dao.impl.gantt

Alles, was com.singaporeair.maps.app.dao.impl.gantt passt auch com.singaporeair.maps entsprechen, die in 2 log entties führen.

Rate 1: Sie müssen Appendervererbung ausschalten. Es scheint, dass dies falsch ist.

Rate 2: Der Root-Logger und die com.singaporeair.maps protokollieren beide die SL- und EL-Appender. Dies ist nur eine Vermutung, aber versuchen, dies zu ändern:

log4j.logger.com.singaporeair.maps=TRACE,SL,EL 

dazu:

log4j.logger.com.singaporeair.maps=TRACE 
+0

deklariert haben versucht, es zu entfernen .. aber immer noch Duplikate :( – prabu

9

Wenn Sie additiv zu deaktivieren, die Holzfäller, die Kinder der Eltern sind nicht doppelt Protokollierung verursachen. Zum Beispiel:

#Logger configuration 
log4j.logger.com.singaporeair.maps=TRACE,SL,EL 
log4j.additivity.com.singaporeair.maps=false 

log4j.logger.com.singaporeair.maps.app.service.impl.gantt=DEBUG,MAPS_FC 
log4j.additivity.com.singaporeair.maps.app.service.impl.gantt=false 

log4j.logger.com.singaporeair.maps.app.dao.impl.gantt=DEBUG,MAPS_FC 
log4j.additivity.com.singaporeair.maps.app.dao.impl.gantt=false 
+0

Siehe https://logging.apache.org/log4j/2 .x/manual/configuration.html # Additivität – Lu55

1

Wahrscheinlich wäre hilfreich für diejenigen, die doppelte Problem in einer Multi-Thread-Anwendung auftreten (könnte die Antwort nicht in google finden):

Dies geschieht, wenn ein Thread und einen anderen Thread ausgeführt wird geöffnet Logger in die gleiche Log-Datei, die der erste Thread zum Schreiben verwendet.

.removeAllAppenders() bevor ich einen neuen Appender hinzugefügt, um das Problem zu lösen.