zoukankan      html  css  js  c++  java
  • log4j

    Log4j是Apache下的一款开源的日志框架,通过在项目中使用 Log4J,我们可以控制日志信息输出到控制台、文件、甚至是数据库中。我们可以控制每一条日志的输出格式,通过定义日志的输出级别,可以更灵活的控制日志的输出过程。方便项目的调试。
    入门案例:

      1.创建工程,引入依赖

    <dependencies>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
        </dependencies>

      2.log4j.properties 配置文件

    log4j.rootLogger=INFO,Console
    log4j.appender.Console=org.apache.log4j.ConsoleAppender
    log4j.appender.Console.layout=org.apache.log4j.PatternLayout
    log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n

      3.测试

    @Test
    public void test01() {
        // 初始化配置信息(如果没有配置文件,需要加上)
        // BasicConfigurator.configure();
        // 获取日志记录器对象
        Logger logger = Logger.getLogger(Log4jTest.class);
        // 日志记录输出
        logger.info("hello log4j");
    
        // 日志级别
        logger.fatal("fatal"); // 严重错误,一般会造成系统崩溃和终止运行
        logger.error("error"); // 错误信息,但不会影响系统运行
        logger.warn("warn"); // 警告信息,可能会发生问题
        logger.info("info"); // 程序运行信息,数据库的连接、网络、IO操作等
        logger.debug("debug"); // 调试信息,一般在开发阶段使用,记录程序的变量、参数等
        logger.trace("trace"); // 追踪信息,记录程序的所有流程信息
    }

    日志的级别:

      每个Logger都有一个日志级别(log level),用来控制日志信息的输出。日志级别从高到低分为:
        fatal 指出每个严重的错误事件将会导致应用程序的退出。
        error 指出虽然发生错误事件,但仍然不影响系统的继续运行。
        warn 表明会出现潜在的错误情形。
        info 一般和在粗粒度级别上,强调应用程序的运行全程。
        debug 一般用于细粒度级别上,对调试应用程序非常有帮助。(默认级别)
        trace 是程序追踪,可以用于输出程序运行中的变量,显示执行的流程。
      还有两个特殊的级别:
        OFF,可用来关闭日志记录。
        ALL,启用所有消息的日志记录。

      注:一般只使用 4个级别,优先级从高到低为 ERROR > WARN > INFO > DEBUG

    Log4j组件:

      Log4J 主要由 Loggers (日志记录器)、Appenders(输出端)和 Layout(日志格式化器)组成。其中Loggers 控制日志的输出级别与日志是否输出;Appenders 指定日志的输出方式(输出到控制台、文件等);Layout 控制日志信息的输出格式。
      1.Loggers

        日志记录器,负责收集处理日志记录,实例的命名就是类“XX”的full quailied name(类的全限定名),
        Logger的名字大小写敏感,其命名有继承机制:例如:name为org.apache.commons的logger会继承name为org.apache的logger。
        Log4J中有一个特殊的logger叫做“root”,他是所有logger的根,也就意味着其他所有的logger都会直接或者间接地继承自root。
        root logger可以用Logger.getRootLogger()方法获取。
        但是,自log4j 1.2版以来, Logger 类已经取代了 Category 类。对于熟悉早期版本的log4j的人来说,Logger 类可以被视为 Category 类的别名。
      2.Appenders

        Appender 用来指定日志输出到哪个地方。Log4j 常用的输出目的地有以下几种:
          

       3.Layouts:

        布局器 Layouts 用于控制日志输出内容的格式,让我们可以使用各种需要的格式输出日志。Log4j常用的Layouts:
          

        Layout的格式:(用于PatternLayout自定义格式输出日志)

          在 log4j.properties 配置文件中,我们定义了日志输出级别与输出端,在输出端中分别配置日志的输出格式。

          log4j 采用类似 C 语言的 printf 函数的打印格式格式化日志信息,具体的占位符及其含义如下:
            %m  输出代码中指定的日志信息
            %p  输出优先级,即 DEBUG、INFO 等
            %n  换行符
            %r  输出自应用启动到输出该 log 信息耗费的毫秒数
            %c  输出打印语句所属的类的全名
            %t  输出产生该日志的线程全名
            %d  输出服务器当前时间,默认为 ISO8601,也可以指定格式,如:%d{yyyy年MM月dd日 HH:mm:ss}
            %l  输出日志时间发生的位置,包括类名、线程、及在代码中的行数。如:Test.main(Test.java:10)
            %F  输出日志消息产生时所在的文件名称
            %L  输出代码中的行号
            %%  输出一个 "%" 字符
          可以在 % 与字符之间加上修饰符来控制最小宽度、最大宽度和文本的对其方式。这里拿 %c 来举例,其他占位符类上,如:
            %5c  输出类名称,最小宽度是5,默认的情况下右对齐
            %-5c  输出类名称,最小宽度是5,"-"号指定左对齐
            %.5c  输出类名称,最大宽度是5,超出长度就会将左边多出的字符截掉
            %20.30c 类名称<20字符补空格,并且右对齐,>30字符,就会将左边多出的字符截掉

        Appender的输出

          控制台,文件,数据库

    #指定日志的输出级别与输出端
    log4j.rootLogger=INFO,Console,A,logDB
    
    # 控制台输出配置
    log4j.appender.Console=org.apache.log4j.ConsoleAppender
    log4j.appender.Console.layout=org.apache.log4j.PatternLayout
    #log4j.appender.Console.layout=org.apache.log4j.HTMLLayout
    #log4j.appender.Console.layout=org.apache.log4j.xml.XMLLayout
    log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
    
    # 文件输出配置
    log4j.appender.A=org.apache.log4j.DailyRollingFileAppender
    #指定日志的输出路径
    log4j.appender.A.File=d:/logs/log.txt
    #追加写入日志
    log4j.appender.A.Append=true
    #使用自定义日志格式化器
    log4j.appender.A.layout=org.apache.log4j.PatternLayout
    #指定日志的输出格式
    log4j.appender.A.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%t:%r] - [%p] %m%n
    #指定日志的文件编码
    log4j.appender.A.encoding=UTF-8
    #指定日期拆分规则   下面是默认值
    log4j.appender.A.datePattern='.'yyyy-MM-dd
    
    #mysql
    log4j.appender.logDB=org.apache.log4j.jdbc.JDBCAppender
    log4j.appender.logDB.layout=org.apache.log4j.PatternLayout
    log4j.appender.logDB.Driver=com.mysql.jdbc.Driver
    log4j.appender.logDB.URL=jdbc:mysql://localhost:3306/test
    log4j.appender.logDB.User=root
    log4j.appender.logDB.Password=root
    log4j.appender.logDB.Sql=INSERT INTO log(project_name,create_date,level,category,file_name,thread_name,line,all_category,message) values('fgy','%d{yyyy-MM-dd HH:mm:ss}','%p','%c','%F','%t','%L','%l','%m')

    自定义Logger:

    # 自定义Logger
    log4j.logger.pers.fgy = info,A
  • 相关阅读:
    VysorPro助手
    Play 2D games on Pixel running Android Nougat (N7.1.2) with Daydream View VR headset
    Play 2D games on Nexus 6P running Android N7.1.1 with Daydream View VR headset
    Native SBS for Android
    ADB和Fastboot最新版的谷歌官方下载链接
    How do I install Daydream on my phone?
    Daydream Controller手柄数据的解析
    蓝牙BLE传输性能及延迟分析
    VR(虚拟现实)开发资源汇总
    Android(Java)控制GPIO的方法及耗时分析
  • 原文地址:https://www.cnblogs.com/roadlandscape/p/12739779.html
Copyright © 2011-2022 走看看