2013-08-28 43 views
7

Tôi đang nhận các mục nhập trùng lặp trong tệp nhật ký của mình. Đã đính kèm log4j.properties của tôi bên dưới.Mục nhật ký trùng lặp 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 

Bắt mục dulicate trong log.log tập tin cấu hình ở trên.

Log chiết xuất:

[ 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 giúp

+0

Có liên quan đến phụ gia logger không? –

+0

không .. tôi chỉ cố gắng làm cho nó sai. Nhưng tôi vẫn đang nhận được bản sao .. – prabu

+1

YOu có nghĩa là trong thư mục gốc? Nó không được thừa hưởng, bạn cần phải làm điều đó cho mỗi logger con –

Trả lời

0

com.singaporeair.maps là một superset của com.singaporeair.maps.app.service.impl.ganttcom.singaporeair.maps.app.dao.impl.gantt

Tất cả những gì phù hợp với com.singaporeair.maps.app.dao.impl.gantt cũng sẽ phù hợp com.singaporeair.maps mà sẽ dẫn đến 2 entties log.

Đoán 1: Bạn cần tắt kế thừa bộ phận thừa kế. Có vẻ như điều này là sai.

Đoán 2: Trình ghi nhật ký gốc và com.singaporeair.maps đều ghi nhật ký vào trình bổ sung SL và EL. Đây chỉ là một phỏng đoán, nhưng cố gắng thay đổi này:

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

này:

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

đã cố gắng xóa nó .. nhưng vẫn nhận được bản sao: ( – prabu

9

Nếu bạn tắt additivity, những người khai thác gỗ mà là con cái của các bậc phụ huynh sẽ không gây ra khai thác gỗ kép. Ví dụ:

#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

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

1

Có lẽ sẽ rất hữu ích cho những ai gặp vấn đề trùng lặp trong một ứng dụng đa luồng (không thể tìm thấy câu trả lời trong google):

này xảy ra khi một thread được thực hiện và một thread mở logger vào cùng một tệp nhật ký mà luồng đầu tiên được sử dụng để viết.

.removeAllAppenders() trước khi tôi thêm ứng dụng mới giúp giải quyết vấn đề.

Các vấn đề liên quan