zoukankan      html  css  js  c++  java
  • Log4j 日志组件

    官网:https://logging.apache.org/log4j/2.x/

    使用 Log4j 的步骤:

    第一步 引入 Log4j 的 jar 包

    1. 直接下载 log4j-x.x.x.jar 到 classpath 中

    2. 使用 maven 配置,在 pom.xml 中增加如下依赖即可

    <denpendency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

    第二步 配置 Log4j

    1. Log4j 可以通过 java 程序动态设置,但每次修改后需要重新编译

    2. 通过配置文件的方式进行配置

        -- xml 文件

        -- properties 文件(推荐使用)Java 特性文件(键=值)

    第三步 在需要输出日志的类中加入相关语句

    一个 log4j.properties 的例子

    ### 全局配置 ###
    log4j.rootCategory=INFO, stdout
    log4j.rootLogger=info, stdout
    
    ### stdout ###
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.out
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p - %m%n
    
    ### set package ###
    log4j.logger.org.springframework=info
    log4j.logger.org.apache.catalina=info
    log4j.logger.org.apache.commons.digester.Digester=info
    log4j.logger.org.apache.catalina.startup.TldConfig=info
    log4j.logger.chb.test=debug

    Log4j 由三个重要的组件构成:日志信息的优先级、日志信息的输出目的地、日志信息的输出格式。

    日志信息的优先级从高到低有:ERROR、WARN、INFO、DEBUG 等,分别用来指定这条日志信息的重要程度

    日志信息的输出目的地指定了日志将打印到控制台还是文件中

    日志嘻嘻的输出格式指定了日志信息的显示内容

    日志信息的优先级

    org.apache.logging.log4j.Level 类中指定了以下 8 个日志级别

    OFF  // most specific, no logging. No events will be logged.
    FATAL  // most specific, little data. A severe error that will prevent the application from continuing.
    ERROR  // An error in the application, possibly recoverable. 
    WARN  // An event that might possible lead to a error. 
    INFO  // An event for informational purpose. 
    DEBUG  // A general debugging event 
    TRACE  // least specific, a lot of data. A fine-grained debug message, typically capturing the flow through the applicaiton.
    ALL  // least specific, all data. All events should be logged.

    如果使用了级别 P,则所有级别低于 P 的日志信息都不会被打印出来

    最高级别 OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL 最低级别

    例如 如果启用 WARN 级别,则 ERROR、FATAL、OFF级别都会开启

    配置根 Logger

    全局 Logger 主要定义 log4j 支持的日志级别及日式输出目的地,其语法为

    log4j.rootLogger = [LEVEL], appenderName, appenderName, ...

    LEVEL 是日志记录的级别

    appenderName 指定日志信息输出的位置,可以同时指定多个输出的目的地。

    配置日志信息输出目的地 Appender,其语法如下

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

    Log4j 提供的 appender 有以下几种:

    org.apache.log4j.ConsoleAppender  // 控制台
    org.apache.log4j.FileAppender  // 文件
    org.apache.log4j.DailyRollingFileAppender  // 每天产生一个日志文件
    org.apache.log4j.RollingFileAppender  // 文件大小到达指定尺寸的时候产生一个新的文件
    org.apache.log4j.WriterAppender  // 将日志信息以格式流发送到任意指定的地方  

    配置日志信息的格式(布局),其语法为:

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

    Log4j 提供的 layout 有以下几种:

    org.apache.log4j.HTMLLayout  // 以 HTML 表格的形式布局
    org.apache.log4j.PatternLayout  // 可以灵活的指定布局模式
    org.apache.log4j.SimpleLayout  // 包含日志信息的级别和信息字符串
    org.apache.log4j.TTCCLayout  // 包含日志产生的时间、线程、类别等信息

    Log4j 采用类似于 C 语言中的 printf 函数的打印格式来格式化日志信息,打印参数如下:

    %m  // 输出代码中指定的消息
    %p  // 输出优先级,即 DEBUG、INFO、WARN、ERROR、FATAL
    %r  // 输出自应用启动到输出到该 log 信息耗费的毫秒数
    %c  // 输出所属的类,通常就是所在类的全限定名
    %t  // 输出产生该日志事件的线程名
    %n  // 输出一个回车换行符,Windows 平台为 “rn”  Unix 平台为 “n”
    %d  // 输出日志时间点的日期或时间,默认格式为 ISO8601,也可以在其后指定格式,比如:%d{yyyy MM dd HH:mm:ss, SSS}
    %l  // 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数,举例:Testlog4.main(TestLog4.java:10)

     控制台选项

    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指将消息覆盖指定的文件内容。

    RollingFilerAppender 选项

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

     

  • 相关阅读:
    beego学习笔记(4):开发文档阅读(1)
    go的匿名组合
    beego学习笔记(3)
    beego学习笔记(2)
    python发送post请求发送json数据时,报415的原因和处理方法。
    Kali Linux的安装
    linux下配置mysql的远程访问
    selenium学习笔记
    Fiddler使用方法简介
    使用webdriver打开本地浏览器--python版
  • 原文地址:https://www.cnblogs.com/0820LL/p/10074515.html
Copyright © 2011-2022 走看看