1.配置默认的 logger :rootLogger
#config root logger, this is the default logger
log4j.rootLogger = DEBUG,stdout,rolling_file
# Console Appender #
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.encoding=UTF-8
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d[%p] %c[%M(%L)] - %m%n
log4j.appender.stdout.Threshold=WARN
# Rolling File #
log4j.appender.rolling_file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.rolling_file.Threshold=WARN
log4j.appender.rolling_file.encoding=UTF-8
log4j.appender.rolling_file.File=data/logs/server.log
# create one file every hour
log4j.appender.rolling_file.DatePattern='_'yyyy-MM-dd_HH
log4j.appender.rolling_file.layout=org.apache.log4j.PatternLayout
log4j.appender.rolling_file.layout.ConversionPattern=%d[%p] %c[%M(%L)] - %m%n
作用:在类中获取 logger 的实例时,如果整个项目只配置了一个 rootLogger,那么在使用
private static Logger logger = Logger.getLogger(XXX.class);
的时候,默认获取的是 rootLogger
2.配置指定名称的 logger
# create logger for specified log
log4j.logger.cookieUser=INFO,cookieUser
# dont append info to rootLogger
log4j.additivity.cookieUser = false
log4j.appender.cookieUser=org.apache.log4j.DailyRollingFileAppender
log4j.appender.cookieUser.File=data/logs/cookieUser.log
log4j.appender.cookieUser.DatePattern='_'yyyy-MM-dd_HH
log4j.appender.cookieUser.layout=org.apache.log4j.PatternLayout
log4j.appender.cookieUser.layout.ConversionPattern=%m%n
作用:有时候我们可能想把不同的日志输出到不同的日志文件中去,这个时候我们就想使用指定名称的 logger
private static Logger cookieUserlogger = Logger.getLogger("cookieUser");
之后的所有此 logger 输出内容都会被输出到 data/logs/cookieUser.log 文件中
3.为指定包配置默认的 logger
# create logger for specified class
log4j.logger.com.log.test1=INFO,crowdInfoRefresher
log4j.additivity.crowdInfoRefresher = false
log4j.appender.crowdInfoRefresher=org.apache.log4j.DailyRollingFileAppender
log4j.appender.crowdInfoRefresher.File=data/logs/test1.log
log4j.appender.crowdInfoRefresher.DatePattern='_'yyyy-MM-dd
log4j.appender.crowdInfoRefresher.layout=org.apache.log4j.PatternLayout
log4j.appender.crowdInfoRefresher.layout.ConversionPattern=%m%n
作用:有时候我们想把指定包里面的日志输出到指定的文件里面,这个时候我们就需要用到这个配置了。
这个时候通过
private static Logger logger = Logger.getLogger(XXX.class);
获取的 logger 将不再是 rootLogger 而是为指定包配置的 logger
当然你如果想要在此使用 rootLogger 那么你就需要使用
private static Logger logger = Logger.getRootLogger();
来获取 rootLogger。
参数解释:
DailyRollingFileAppender:按照天生成日志,需要配合 DatePattern 参数来指定是按照天生成日志还是安装小时生成日志。
按照天:log4j.appender.crowdInfoRefresher.DatePattern='_'yyyy-MM-dd
按照小时:log4j.appender.cookieUser.DatePattern='_'yyyy-MM-dd_HH
示例:log4j.properties 文件
测试类: