日志记录-log4j

1.log4j主要的三个组件:Loggers(记录器)、Appenders(输出源)、Layouts(布局)
   |- Loggers
      分为五个级别:debug、info、warn、error、fatal,其重要程度为:debug<info<warn<error<fatal
      log4j的规则之一:输出级别不低于设定级别的日志信息,如:设定级别为info,info,warn,error,fatal都会输出,而debug不会输出。
   |- Appenders
      禁用和使用日志请求只是log4j的基本功能,log4j还可以提供许多强大的功能,如把日志输出到不同的地方:控制台console、文件files等,可以根据天数或者文件大小产生新的文件,可以以留的形式发送到其他地方。
      常使用的类如下:
      org.apache.log4j.ConsoleAppender(控制台)
      org.apache.log4j.FileAppender(文件)
      org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
      org.apache.log4j.RollingFileAppender(文件大小到达指定大小的时候产生新的文件)
      org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定地方)
      配置模式:
      log4j.appender.appenderName=className
      log4j.appender.appenderName.Option1=value1
      ...
      log4j.appender.appenderName.OptionN=valueN
   |- Layouts
       如果希望日志系统根据自己的喜好格式化自己的日志输出,log4j可以在appenders的后面附加layouts来完成这个功能。
       Layouts提供四种日志输出样式:HTML样式,自由指定样式,包含日志级别与信息的样式和包含日志时间、线程、级别等信息的样式
       常使用的类如下:
       org.apache.log4j.HTMLLayout(以HTML表格形式布局)
       org.apache.log4j.PatternLayout(可以灵活指定布局模式)
       org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
       org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等信息)
       配置模式:
       log4j.appender.appenderName.Layout=className
       log4j.appender.appenderName.layout.Option1=value1
       ...
       log4j.appender.appenderName.layout.OptionN=valueN
2.配置详解
      在实际应用中,要是log4j在系统中运行必须事先设定配置文件,配置文件事实上也是对Logger、Appender、Layout进行相应设定,一种是XML格式的文件,一种是properties属性文件。
      下面以properties属性文件为例介绍log4j.properties的配置
      2.1 配置根Logger:
          |- log4j.rootLogger=level,appenderName1,appenderName2,......
              level:设定日志记录的最低级别,可设置OFF,DEBUG,INFO,WARN,ERROR,FATAL,ALL,log4j建议只是用中间四个级别。
              appenderName:指定日志信息输出到哪里,可以同时指定多个输出目的地,用逗号隔开
              如:log4j.rootLogger=INFO,Console,dailyFile
          |- log4j.additivity.org.apache=false,表示Logger不会再父Logger的appender里面输出,默认为true
      2.2配置日志信息输出目的地Appender
          |- log4j.appender.appenderName=className
              appenderName:自定义appenderName,在log4j.rootLogger设置中使用
              className可设置值如下:
              org.apache.log4j.[ConsoleAppender(控制台),FileAppender(文件),DailyRollingFileAppender(每天产生一个日志文件),RollingFileAppender(文件大小到达指定大小产生新的文件),WriteAppender(将日志信息以流的格式发送到任意的地方)]
              如:log4j.appender.dailyFile=org.apache.log4j.DailyRollingFileAppender
                      通用选项:
                    Threshold=WARN,指定日志信息的最低输出级别,默认DEBUG
                     ImmediateFlush=true,表示所有消息都会被立即输出,设置false为不输出,默认true
            |-ConsoleAppender选项:
                    Threshold=WARN,指定日志信息的最低输出级别,默认DEBUG
                    ImmediateFlush=true,表示所有消息都会被立即输出,设置false为不输出,默认true
                   Target=System.err:指定作为系统错误输出,默认值是System.out
            |-FileAppender选项
                   Append=true,表示消息覆盖指定的文件内容,true表示增加,默认是true
                   File=D:/logs/logging.log4j,表示消息输出到D盘logs文件夹logging.log4j文件中
            |-DailyRollingFileAppender选项
                   Append=true,同FileAppender.Append
                   File=D:/logs/logging.log4j,同上
                   DatePattern="."yyyy-MM,每月滚动一次日志文件,即每月产生一个新的日志文件,当月日志文件名为logging.log4j,前一个月的日志文件名为logging.log4j.yyyy-MM
                   另外也可以指定按周、天、时、分等来滚动日志文件,对应格式如下:
                    1) "."yyyy-MM    每月
                    2) "."yyyy-ww    每周
                    3) "."yyyy-MM-dd    每天    "."yyyy-MM-dd-a    每天两次
                    4) "."yyyy-MM-dd-HH        每小时
                    5) "."yyyy-MM-dd-HH-mm    每分钟
            |-RollingFileAppender选项
                   Append=true,同上
                   File=D:/logs/logging.log4j,同上
                   MaxFileSize=2MB,指定文件大小为多少的时候开始换新的文件,单位可以使KB/MB/GB,新文件产生,将原来的内容移动到logging.log4j.1文件中
                   MaxBackupIndex=2,指定可以产生的滚动文件的最大数,如设置2表示可以产生logging.log4j.1,logging.log4j.2两个滚动文件和logging.log4j
    2.3配置日志信息的输出格式Layout
        |-log4j.appender.appenderName.layout=className
               className的值有:
               org.apache.log4j.[HTMLLayout、PatternLayout、SimpleLayout、TTCCLayout]
            |-PatternLayout选项
                ConversioinPattern=%m%n
3.格式化符号说明:
    %p,输出日志信息的优先级,即debug、info、warn、error、fatal
    %d,输出日志时间点的日期或时间,默认格式为ISO8601,也可以指定格式,如:%d{yyyy/MM/dd HH:mm:ss,SSS}
    %r,输出子应用程序启动到输出该log信息耗费的毫秒数
    %t,输出产生该日志事件的线程名
    %l,输出日志事件的发生位置,相当于%c.%M(%F:%L)的组合,包含类全名、方法、文件名、在代码中的行数,如:test。TestLog4j.main(TestLog4j.java:10)
    %c,输出日志信息所述的类目,通常就是所在类的全名
    %M,输出产生日志信息的方法名
    %F,暑促日志信息产生时所在的文件名称
    %L,输出代码中的行数
    %m,输出代码中指定的具体日志信息
    %n,输出一个回车换行符,windows为/r/n unix为/n
    %x,输出和当前线程相关联的NDC(嵌套诊断环境)

附:log4j配置示例
###设置日志文件级别###
log4j.rootLogger=debug,console,dailyFile,err
log4j.additivity.org.apache=true

###输出到控制台###
#指定控制台日志输出
log4j.appender.console=org.apache.log4j.ConsoleAppender
#输出级别debug
log4j.appender.console.Threshold=DEBUG
#指定立即输出
log4j.appender.console.ImmediateFlush=true
#指定作为系统标准输出,
log4j.appender.console.Target=System.out
#指定日志输出格式为灵活布局模式
log4j.appender.console.layout=org.apache.log4j.PatternLayout
#设置日志输出显示消息格式   年-月-日 时:分:秒 ->信息级别 -类名:行数-信息
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}->[%p]-%c{1}:%L-%m%n

###保存日志到单独文件###
#指定超过文件大小限制时产生新的文件
log4j.appender.dailyFile=org.apache.log4j.RollingFileAppender
#指定日志记录级别info
log4j.appender.dailyFile.Threshold=INFO
#指定立即输出
log4j.appender.dailyFile.ImmediateFlush=true
#指定日志文件存放路径
log4j.appender.dailyFile.File=../logs/icer_servlet_log.log
#指定日志文件编码格式
log4j.appender.dailyFile.Encoding=UTF-8
#指定日志文件为追加保存
log4j.appender.dailyFile.Append=true
#指定日志文件最大5MB
log4j.appender.dailyFile.MaxFileSize=5MB
#指定日志文件最大滚动数为5
log4j.appender.dailyFile.MaxBackupIndex=5
#指定灵活布局模式输出
log4j.appender.dailyFile.layout=org.apache.log4j.PatternLayout
#指定输出格式
log4j.appender.dailyFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}->[%p]-%c{1}:%L-%m%n

###保存异常信息到单独文件###
log4j.appender.err=org.apache.log4j.RollingFileAppender
log4j.appender.err.Threshold=ERROR
log4j.appender.err.ImmediateFlush=true
log4j.appender.err.File=../logs/icer_servlet_error.log
log4j.appender.err.Encoding=UTF-8
log4j.appender.err.Append=true
log4j.appender.err.MaxFileSize=5MB
log4j.appender.err.MaxBackupIndex=5
log4j.appender.err.layout=org.apache.log4j.PatternLayout
log4j.appender.err.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}->[%p]-%c{1}:%L-%m%n

log4j.logger.com.opensymphony.xwork2=ERROR
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值