2013-08-28 16 views
7

Ricevo voci duplicate nel mio file di registro. Ho allegato i miei log4j.properties di seguito.Voci di registro duplicate 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 

Ottenere voci dulicate in log.log file di configurazione sopra.

estratto Log:

[ 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 aiutare

+0

È correlato all'additività del logger? –

+0

no .. ho appena provato a renderlo falso. Ma sto ancora ottenendo duplicati .. – prabu

+1

Vuoi dire in radice? Non è ereditato, devi farlo per ogni registratore di bambini –

risposta

0

com.singaporeair.maps è un superset di com.singaporeair.maps.app.service.impl.gantt e com.singaporeair.maps.app.dao.impl.gantt

Tutto ciò che corrisponde com.singaporeair.maps.app.dao.impl.gantt sarà anche corrispondere com.singaporeair.maps che si tradurrà in 2 entties di registro.

Indovina 1: è necessario disattivare l'ereditarietà di appender. Sembra che questo sia sbagliato.

Indovina 2: il logger principale e le com.singaporeair.maps si collegano entrambe alle appendici SL e EL. Questa è solo una supposizione, ma provare a cambiare questo:

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

a questo:

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

provato a rimuoverlo .. ma ottenendo ancora duplicati :( – prabu

9

Se si spegne l'additività, i taglialegna che sono figli di genitori non causerà doppia registrazione. Per esempio:

#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

Vedi https://logging.apache.org/log4j/2 .x/manuale/configuration.html # additività – Lu55

1

Probabilmente sarebbe utile per coloro che hanno esperienza problema duplicato in un'applicazione multithread (non riusciva a trovare la risposta in google):

Questo accade quando un thread è fatto e un altro thread aperto logger allo stesso file di log che il primo thread usava per scrivere.

.removeAllAppenders() prima che aggiungessi un nuovo appender aiutato a risolvere il problema.

Problemi correlati