log4j总结-通过代码动态创建一个Logger

通过代码动态创建一个Logger和Appender

 

        LoggerRepository repository = LogManager.getLoggerRepository();
        Logger dbossClientLogger = repository.getLogger("com.duitang.dboss.client");
        dbossClientLogger.setAdditivity(false);
        dbossClientLogger.setLevel(Level.INFO);
        DailyRollingFileAppender appender = new DailyRollingFileAppender(
                                                                         new PatternLayout(
                                                                                           "%d{yyyy-MM-dd HH:mm:ss} [%p] %c %x - %m%n"),
                                                                         "/duitang/logs/usr/japa/dboss.log",
                                                                         "yyyy-MM-dd");
        dbossClientLogger.addAppender(appender);

 

log4j的几个问题:

1. spring如何初始化log4j?
2. 不使用spring如何初始化log4j?
3. log4j的logger和appender如何定义?

spring 初始化流程
1.org.springframework.web.util.Log4jConfigListener
2.org.springframework.util.Log4jConfigurer.initLogging()
3.调用log4j的入口
org.apache.log4j.xml.DOMConfigurator.configure(url)

org.apache.log4j.xml.PropertyConfigurator.configure(url)


RollingFileAppender和DailyRollingFileAppender:

log4j提供RollingFileAppender和DailyRollingFileAppender将日志记录输出到文件。RollingFileAppender按log文件最大长度限度生成新文件,DailyRollingFileAppender按日期生成新文件。

log4j.rootCategory=INFO, CONSOLE,R
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${catalina.base}/logs/portal.log
log4j.appender.R.Encoding=GBK
log4j.appender.R.MaxFileSize=256KB
log4j.appender.R.Append=true
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%-d %t %-5p [%c{1}:%L] %m%n

 
上面是使用RollingFileAppender的写法,将会在Tomcat的logs目录下,生成portal.log文件,当文件大小超过256KB时,将原来的文件更名为portal.log.1,再使用portal.log接收新的日志记录。

log4j.appender.R.MaxBackupIndex=10表示只保存10个备份文件。

下面是使用DailyRollingFileAppender的写法,配置完成的当天, 会在Tomcat的logs目录下,生成名为portal.log的文件,比如今天是2010-01-13, 到明天这个文件将更名为portal.log2010-01-13.log

log4j.rootCategory=INFO, CONSOLE,DailyRolling
log4j.appender.DailyRolling=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DailyRolling.File=${catalina.base}/logs/portal.log
log4j.appender.DailyRolling.DatePattern=yyyy-MM-dd'.log'
log4j.appender.DailyRolling.layout=org.apache.log4j.PatternLayout
log4j.appender.DailyRolling.layout.ConversionPattern=%-d %t %-5p [%c{1}:%L] %m%n

 

 

logger的additivity

 

它是 子Logger 是否继承 父Logger 的 输出源(appender) 的标志位。具体说,默认情况下子Logger会继承父Logger的appender,也就是说子Logger会在父Logger的appender里输出。若是additivity设为false,则子Logger只会在自己的appender里输出,而不会在父Logger的appender里输出。

 

你可能感兴趣的:(Logger)