日志入门

使用slf4j和log4j来构造日志系统。目标是:(1)按天存放日志(2)不同级别按照不同文件输出

一,slf4j

  • 安装
  1. 下载 slf4j-api-1.7.25.jar,slf4j-log4j12-1.7.25.jar(使用log4j作为具体的日志工具)
  • 运行效率
  1. log4j需要使用类似 logger.isDebugEnabled()来解决字符串拼接的性能消耗,slf4j使用{}来做字符串替换。

二,log4j

  • logger: 有日志级别和输出appender两个属性
  1. 每个logger有且只有一个日志级别。如果单独定义就是定义级别,如果没有单独定义则继承父类的日志级别。----取最小子集
  2. 每个logger有多个appender。首先会继承父类所有的appender,再加上自己单独定义的appender。----------取最大合集
  • properties的配置讲解
  1. 配置logger

    og4j.rootLogger  =   [ level ]   ,  appenderName1 ,  appenderName2    -----配置根logger的日志级别和输出目的地

    log4j.logger.loggerName =  [ level ]   ,  appenderName1 ,  appenderName2  -----配置名字为loggerName的logger

  1. 配置Appender

    log4j.appender.appenderName  =  fully.qualified.name.of.appender.class 
    log4j.appender.appenderName.option1  =  value1 
     log4j.appender.appenderName.optionN  =  valueN 

    

    • 控制台选项

      Threshold=DEBUG:指定日志消息的输出最低层次。
      ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
      Target=System.err:默认情况下是:System.out,指定输出控制台

    • FileAppender 选项

      Threshold=DEBUF:指定日志消息的输出最低层次。
      ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
      File=mylog.txt:指定消息输出到mylog.txt文件。
      Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。

    • RollingFileAppender 选项

      Threshold=DEBUG:指定日志消息的输出最低层次。
      ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
      File=mylog.txt:指定消息输出到mylog.txt文件。
      Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
      MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
      MaxBackupIndex=2:指定可以产生的滚动文件的最大数。

三,实例

  • 服务器tomcat配置

### 配置logger名称和日志输出级别 ###
log4j.rootLogger = debug, stdout,errorAppender #根logger现在消息级别是debug,有一个appender,就是stdout,
log4j.logger.org.springframework = warn,warnAppender
log4j.logger.org.apache = warn,warnAppender
log4j.logger.com.mchange = warn, warnAppender

 

### 输出到控制台 ###
log4j.appender.stdout = org.apache.log4j.DailyRollingFileAppender
log4j.appender.stdout.File = ${catalina.home}/logs/catalina.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %-d{HH:mm:ss} [ %l] - [ %p ] %m%n

### 输出到日志文件 ###
## 输出DEBUG级别以上的日志--------在catalina.out中有debug级别的日志,所以这个可以不用
log4j.appender.warnAppender= org.apache.log4j.DailyRollingFileAppender
log4j.appender.warnAppender.File = /home/logs/kshy/warn.log
log4j.appender.warnAppender.Append = true
log4j.appender.warnAppender.Threshold = WARN  ## 输出WARN  级别以上的日志
log4j.appender.warnAppender.LevelMin=debug
log4j.appender.warnAppender.LevelMax=debug
log4j.appender.warnAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.warnAppender.layout.ConversionPattern = %-d{HH:mm:ss} [ %l ] - [ %p ] %m%n

### 保存异常信息到单独文件 ###
## 只输出ERROR级别以上的日志!!!
log4j.appender.errorAppender = org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorAppender.File = /home/logs/kshy/error.log
log4j.appender.errorAppender.Append = true
log4j.appender.errorAppender.Threshold = ERROR ## 输出ERROR级别以上的日志
log4j.appender.errorAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.errorAppender.layout.ConversionPattern = %-d{HH:mm:ss} [ %l ] - [ %p ] %m%n

posted on 2017-03-18 14:32  重新认识世界  阅读(119)  评论(0编辑  收藏  举报

导航