首先附上一份druid的数据库连接池的日志配置
log4j.rootLogger=INFO, Console
#解决druid日志输出重复的方法(防止日志输出到父包的appender总去,additivity:是否输出到顶层包)
log4j.additivity.druid.sql.Statement=false
#myBatis sql DEBUG TRACE
#log4j.logger.com.flx.core.dao = warn
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target = System.out
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern = [flx][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n
#system log--------------------------------------------------------------------------------------
# Druid
#log4j.logger.druid.sql=warn, Console
log4j.logger.druid.sql.DataSource=warn, Console
log4j.logger.druid.sql.Connection=warn, Console
log4j.logger.druid.sql.Statement=DEBUG, Console
log4j.logger.druid.sql.ResultSet=warn, Console
#答案是通过log4j.logger来指定,log4j.logger后带的包名即为Appender要记录的程序包范围
问题:自定义日志可能会出现日志重复出现的问题?
分析:因为日志会被父类定义的appender输出
解决:采用additivity防止被父类输出
多级日志输出:
### set log levels ###
log4j.rootLogger = INFO , C , D , E
### console ###
log4j.appender.C = org.apache.log4j.ConsoleAppender
log4j.appender.C.Target = System.out
log4j.appender.C.layout = org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern = [flx][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n
### log file ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = ../logs/flx.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = INFO
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = [flx][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n
### exception ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File = ../logs/flx.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = [flx][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n