2013-08-28 3 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 : appender 상속을 해제해야합니다. 이것이 잘못된 것처럼 보입니다.

추측 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() 전에 새로운 appender를 추가하면 문제를 해결하는 데 도움이됩니다.