zoukankan      html  css  js  c++  java
  • 日志入门

    使用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

  • 相关阅读:
    [mysql] update……from……
    [python]接口签名
    [同步脚本]mysql-elasticsearch同步
    什么是Java Marker Interface(标记接口)
    input type="submit" 和"button"有什么区别
    发现个工具,查询Mongo数据使用mysql语法
    红黑树和AVL树(平衡二叉树)区别
    C# 字符串转义和反转义
    MySQL变量的使用
    HTML <form> 标签
  • 原文地址:https://www.cnblogs.com/ttkl90/p/6573945.html
Copyright © 2011-2022 走看看