当前位置: 首页 > 工具软件 > Audit4j > 使用案例 >

log4j配置

劳宇
2023-12-01

1,  配置根logger

log4j.rootLogger  =   [ level ]   ,  appenderName1 ,  appenderName2 

log4j.rootLogger=INFO,console, localLogfile

后面都是并列作为根logger的

 

2,  配置子logger是否打印在父层级appender

log4j.additivity.tasklog(logger名)=false

false表示不打印在父层级appender,默认为true,打印在所有父层级appender

 

3,  自定义日志输出设置

设置自定义logger输出级别以及bean中的logger的时候,即具体包括哪些输出内容的时候,应该是log4j.logger.auditLogger=INFO,auditLogger,而不是log4j.appender.auditLogger=INFO,auditLogger

 

具体设置该logger的设置时使用log4j.appender.logname.XXX=XXX

 

log4j.logger.errorLogger=ERROR,errorLogger

log4j.appender.errorLogger=org.apache.log4j.DailyRollingFileAppender

输出目的地,每天产生一个日志文件

log4j.appender.errorLogger.DatePattern = '.'yyyy-MM-dd

每天一个日志的后缀格式,如tracer.log.2014-12-17

log4j.appender.errorLogger.File=${pafa.log.home}/ClientManage/tracer.log

日志输出目录

log4j.appender.errorLogger.layout=org.apache.log4j.PatternLayout

日志输出格式,一般为PatternLayout,表示灵活指定布局模式

log4j.appender.errorLogger.layout.ConversionPattern=[%d{MM/ddHH:mm:ss}][%-3p]%c{1}:%X{MDCString}%m%n

格式化日志信息

 

4,  性能优化

a)        使用缓冲方式输出日志,减少与磁盘的访问次数

log4j.appender.monitorAppender.BufferedIO=true
log4j.appender.monitorAppender.BufferSize=8192
这个选项用于告诉log4j输出日志的时候采用缓冲的方式,而不是即时flush方式,并且设定了缓冲为8K8K是默认值,可以根据日志输出的情况来修改。这个选项很重要,在测试中发现,当并发访问很高,例如每一秒100个并发以上,使用缓存跟不使用缓冲差距很大。具体数字我这里就不列出来了。
另外我想说的是,log4j输出缓冲日志是以8K为单位的,因为磁盘的一个block8K,这样可以减少碎片,也就是说假设你设置缓存为18Klog4j16K8K*2)的时候就会输出),而不是18K

         b)对输出级别进行判断,比如isInfoEnabled等,组装内容需要资源

组装输出内容之前可对logger的输出级别先进行判断而不要完全依赖log4j控制,因为组装输出日志内容也是要损耗效率的。
        //
log4j并未开启info级日志记录,直接返回
        if(!monitorLogger.isInfoEnabled()){

           return;

       }

 类似资料: