zoukankan      html  css  js  c++  java
  • log4j v1版本的配置和使用

      这里使用log4j的老版本,因为接触到的有相当多项目还在使用log4j 1.x版本,所以简单记录一下log4j v1的用法

    一、导入log4j 1.x的jar包

      如果使用1.x版本,建议使用最后一次更新的版本,其他版本可以自己选择:https://mvnrepository.com/artifact/log4j/log4j

    <!-- https://mvnrepository.com/artifact/log4j/log4j -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
    

       

    二、log4j的错误级别

      在log4j中,一共有5个错误级别,分别是:

      1、fatal(致命错误)

      2、error(错误)

      3、warn(警告)

      4、info(提示信息)

      5、debug(调试信息)

    三、log4j日志输出方式

      在log4j中,日志输出一般有控制台输出和日志文件两种方式,这两种方式并不冲突:

      1、可以只将日志输出到控制台,而不输出到日志文件中;

      2、可以只将日志输出到日志文件中,而不在控制台中打印;

      3、可以将日志,既打印到控制台,又输出到日志文件中。

      对于这两种方式,log4j有专门的的称呼:控制台输出对应console,日志文件输出对应logfile。

      

    四、配置log4j

      在配置log4j的时候需要注意,log4j v1,默认是使用*.properties文件进行配置;而目前log4j v2使用*.xml文件进行配置。

      虽然文件名有区别,但是log4j查找配置文件时,都是去classpath目录下查找

      这里说的是log4j v1,所以创建log4j.properties文件,保存路径随意,只要编译后存放路径是classpath即可,一般来说,如果是maven项目,建议保存到resources目录下。

      到先看一个配置示例,然后解释配置项

    log4j.rootCategory=DEBUG, CONSOLE, LOGFILE
    
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    log4j.appender.CONSOLE.layout.ConversionPattern=-%p - %d{yyyy-MM-dd HH:mm:ss} - %C - line:%L - %m%n
    
    log4j.appender.LOGFILE=org.apache.log4j.FileAppender
    log4j.appender.LOGFILE.File=/opt/logs/app.log
    log4j.appender.LOGFILE.Append=true
    log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
    log4j.appender.LOGFILE.layout.ConversionPattern=-%p - %d{yyyy-MM-dd HH:mm:ss} - %C - line:%L - %m%n

       下面将会对上面的配置文件进行详细解释。

    4.1、log4j的全局配置

    log4j.rootCategory=DEBUG, CONSOLE, LOGFILE
    

      这一行配置,表示,log4j打印的日志错误级别是DEBUG(不区分大小写),日志会显示在控制台(console),同时也会将日志写到文件中(logfile)。

      如果设置rootCategory=INFO和CONSOLE,那么日志的打印级别为INFO(所以debug级别日志不会打印),日志只会输出到控制台(console)。

      

    4.2、控制台日志的配置

    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    log4j.appender.CONSOLE.layout.ConversionPattern=-%p - %d{yyyy-MM-dd HH:mm:ss} - %C - line:%L - %m%n
    

      上面这三行配置,从左边的键就可以看出这是对显示在控制台的日志格式进行设置的。

    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    

      表示向控制台输出日志时,使用org.apache.log4j.ConsoleAppender这个类来实现功能。

    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    

      表示输出的格式使用org.apache.log4j.PatternLayout这个类来管理。

    log4j.appender.CONSOLE.layout.ConversionPattern=-%p - %d{yyyy-MM-dd HH:mm:ss} - %C - line:%L - %m%n
    

      指定输出的格式。其中常用的几个表达式如下:

    %p 输出日志的错误级别
    %C 包名.类名
    %d{YYYY-MM-dd HH:mm:ss} 时间
    %L 行号
    %m 日志输出的信息
    %n 换行

      

    4.3、日志文件输出的配置

      日志文件输出配置,几乎和控制台输出是一样的配置方法。

    log4j.appender.LOGFILE=org.apache.log4j.FileAppender
    

      表示向文件输出日志时,使用org.apache.log4j.FileAppender这个类来实现功能。

    log4j.appender.LOGFILE.File=/opt/logs/app.log
    

      指定日志文件的保存路径(需要该路径有写权限)。

    log4j.appender.LOGFILE.Append=true
    

      设置是否以追加方式记录日志。

      如果设置为false,那么项目重启后,向日志文件中写日志前,会将以前的日志先清空,然后再写入。

      如果设置为true,那么项目重启后,向日志文件中写日志时,不会将以前的日志清空,以前的日志会一直保留。

      这个可以根据自己的情况而定。

    五、使用log4j进行日志记录

      log4j v1和v2的用法会有一些区别,这里只给出了v1的用法:

    package cn.ganlixin.logger;
    
    import org.apache.log4j.Logger;
    import org.junit.Test;
    
    /**
     * 描述: 测试使用log4j v1的版本用法
     */
    public class TestLog4jV1 {
    
        @Test
        public void testLog() {
            // 创建logger,传入当前类的class对象即可
            Logger logger = Logger.getLogger(TestLog4jV1.class);
            logger.debug("debug msg");
            logger.info("info msg");
            logger.warn("warn msg");
            logger.error("error msg");
            logger.fatal("fatal msg");
        }
    }
    

      可以看到控制台输出:

    -DEBUG - 2018-12-05 16:40:39 - cn.ganlixin.logger.TestLog4jV1 - line:14 - debug msg
    -INFO - 2018-12-05 16:40:39 - cn.ganlixin.logger.TestLog4jV1 - line:15 - info msg
    -WARN - 2018-12-05 16:40:39 - cn.ganlixin.logger.TestLog4jV1 - line:16 - warn msg
    -ERROR - 2018-12-05 16:40:39 - cn.ganlixin.logger.TestLog4jV1 - line:17 - error msg
    -FATAL - 2018-12-05 16:40:39 - cn.ganlixin.logger.TestLog4jV1 - line:18 - fatal msg

    六、注意事项

      1、导入Looger包的时候,不要导错误的包,应该是:

    import org.apache.log4j.Logger;
    

      2、只有当错误级别高于或等于配置文件中是设定的级别时,日志才会被打印,否则就不有输出内容。

        5个级别打印日志,分别是debug()、info()、warn()、error()、fatal(),如果配置文件中设置的错误级别是warn(警告级别),那么即使执行了debug()和info(),但是却并不会真的有输出日志;只有当使用warn或者比warn更高级别的error(),fatal()来打印日志的时候,才会真的输出日志。

    七、设置特定的错误级别

      我们的项目中,可能有的地方一点点细微的错误或者警告都很重要,而在有些地方,一些警告都可以忽略。所以,如果我们在log4j.properties中指定log4j追踪的错误级别,这个就有点抓不到重心的感觉。

      log4j提供了一个功能,可以专门为某个包下面的类进行设置错误级别,也可以专门为某个特定的类设置错误级别,甚至可以专门为某个特定的方法设置错误级别。

    # 将全局的日志级别配置为error
    log4j.rootCategory=error, console, logfile # 将lixin.gan.mapp包下面的所有类的错误级别设置为debug log4j.lixin.gan.mapper=debug # 将lixin.gan.service.impl.UserServiceImpl这个类的错误级别设置为error log4j.lixin.gan.service.impl.UserServiceImpl=error # 将lixin.gan.service.impl.AdminServiceImpl类中的show方法的错误级别设置为error log4j.lixin.gan.service.impl.AdminServiceImpl.show=error

      

  • 相关阅读:
    ASP.NET页面事件执行过程 总结
    程序员最应该读的图书(中译版) [收藏]
    C# 中的委托和事件的详解资料
    已添加项。字典中的关键字
    TFS 删除团队项目集合
    注册后第一篇
    类型的权限已失败 SqlClientPermission
    C#创建Oracle存储过程
    使用MySQL with 递归查询菜单树
    MySQL 常用TSQL(持续更新...)
  • 原文地址:https://www.cnblogs.com/-beyond/p/10071918.html
Copyright © 2011-2022 走看看