2013-08-28 59 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 

請幫助

+0

它與記錄儀的可加性有關嗎? –

+0

不..我只是試圖讓它虛假。但仍然我得到重複.. – prabu

+1

你是否意味着根?它不是遺傳的,你需要爲每個兒童記錄器做它 –

回答

0

com.singaporeair.mapscom.singaporeair.maps.app.service.impl.gantt一個超集,匹配com.singaporeair.maps.app.dao.impl.gantt也將匹配com.singaporeair.maps這將導致2個日誌entties com.singaporeair.maps.app.dao.impl.gantt

一切。

猜測1:您需要關閉appender繼承。看起來這是錯誤的。

猜測2:根記錄器和com.singaporeair.maps都記錄到SL和EL appender。這只是一個猜測,但嘗試改變這一點:

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 /手動/ configuration.html#可加 – Lu55

1

很可能是爲那些誰在多線程應用體驗重複問題有幫助(找不到在谷歌的答案):

當一個線程完成這種情況發生,而另一個線程開放記錄器寫入第一個線程用於寫入的同一個日誌文件。

.removeAllAppenders()之前我添加了一個新的appender幫助解決了這個問題。