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

Получение dulicate записей в log.log файл настроен выше.

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 помочь

+0

Связано ли это с регистрационной аддитивностью? –

+0

нет .. я просто пытался сделать его ложным. Но все же я получаю дубликаты .. – prabu

+1

YOU означает в корне? Это не унаследовано, вам нужно сделать это для каждого регистратора –

ответ

0

com.singaporeair.maps является надстройкой com.singaporeair.maps.app.service.impl.gantt и com.singaporeair.maps.app.dao.impl.gantt

Все, что соответствует com.singaporeair.maps.app.dao.impl.gantt будет также соответствовать com.singaporeair.maps, которая приведет к 2 бревенчатых entties.

Угадай 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/ручной/configuration.html # аддитивности – Lu55

1

Вероятно, было бы полезно для тех, кто испытывает повторяющиеся проблемы в многопоточном приложении (не мог найти ответ в Google):

Это происходит, когда один поток выполняется и другой поток открытым logger в тот же файл журнала, который первый поток использовался для записи.

.removeAllAppenders() до того, как я добавил новое приложение, помогло решить проблему.

Смежные вопросы