2013-08-28 17 views
7

ログファイルに重複したエントリがあります。 下記のlog4j.propertiesを添付してください。ログエントリが重複しています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 

は、上記のように構成されたlog.logファイルにdulicateのエントリを取得します。

ログエキス:

[ 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のは

+0

ロガーの加法性に関連していますか? –

+0

いいえ。私はそれを偽にしようとしました。しかし、まだ私は重複を取得しています.. – prabu

+1

あなたはルートで意味ですか?それは継承されていない、あなたはそれぞれの子供ロガーのためにそれを行う必要があります –

答えて

0

com.singaporeair.maps助けはcom.singaporeair.maps.app.service.impl.ganttのスーパーセットとcom.singaporeair.maps.app.dao.impl.ganttも2ログenttiesになりますcom.singaporeair.mapsと一致します一致するcom.singaporeair.maps.app.dao.impl.gantt

すべてです。

推測1:アペンダーの継承をオフにする必要があります。これは間違っているようです。

推測2:ルートロガーとcom.singaporeair.mapsは両方ともSLとELアペンダーにログを記録しています。これは単なる推測ですが、これを変更してみてください。これに

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

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

はそれを削除しようとしましたが、重複を取得しようとしました:( – prabu

9

あなたは加法性をオフにした場合、親の子であるロガーは、二重のロギングを引き起こすことはありません。例えば:

#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

https://logging.apache.org/log4j/2 .x/manual/configuration.html#Additivity – Lu55

1

はおそらくマルチスレッドアプリケーション(グーグルで答えを見つけることができませんでした)での重複問題が発生した人のために役立つだろう:

つのスレッドが実行され、別のスレッドが開いているときに起こります最初のスレッドが書き込んだログファイルと同じログファイルに書き出します。

.removeAllAppenders()私が問題を解決するのに役立つ新しいアペンダーを追加する前に。

関連する問題