Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

LOG4J - Avoid same message two times in log

Tags:

java

log4j

Here is my log4j.properties file

# Set loggers' levels
log4j.rootLogger=warn, trace_file

# Appender
log4j.appender.trace_file=org.apache.log4j.RollingFileAppender
log4j.appender.trace_file.Append=true
log4j.appender.trace_file.File=log/myLog.log
log4j.appender.trace_file.MaxFileSize=10MB
log4j.appender.trace_file.MaxBackupIndex=50

# PatternLayout
log4j.appender.trace_file.layout=org.apache.log4j.PatternLayout
log4j.appender.trace_file.layout.ConversionPattern=%d [%p] (%F:%L) %m%n

# Classes
log4j.logger.my_package=info, trace_file

What I want :

  • Store log requests from my.package in trace_file with at least INFO level
  • Store log requests from all other loggers in trace_file ONLY if it's at least WARN level

My configuration does'nt work. If my.package raises a log request of level WARN, this log request gets written two times. If I use two separate appenders, there is no problem.

What am I missing ?

like image 506
Stephan Avatar asked Jan 25 '12 15:01

Stephan


2 Answers

Try removing the "trace_file" directive from the my_package logger statement.

like image 159
schtever Avatar answered Sep 20 '22 03:09

schtever


Change

log4j.logger.my_package=info, trace_file

to

log4j.logger.my_package=info

Appenders are inherited from the parent logger by default, so by specifying trace_file for both root logger and the my_package, you're telling it to do it twice.

like image 30
skaffman Avatar answered Sep 21 '22 03:09

skaffman