Java log

作者: qingshuiting | 来源:发表于2018-10-15 09:32 被阅读0次

    Java log

    在java项目中经常会使用log,但是自己在使用和选择上都不是特别清楚。所以系统的学习一下。

    多种log之间的关系

    本身java系统中有非常多的log种类的选择:

    1. jdk提供的log
    2. commons log
    3. log4j

    日志框架

    一般日志框架由于:

    1. logger
    2. handler
    3. formater
    4. output

    这四个部分组成,logger需要实现filter,handler中也需要实行多种filter

    一般的调用关系:

    app-> logger -> handler -> output

    其中一个logger可以对应多个handler,也就是一个app事件,可以使用多个handler对象进行处理。

    log4j的使用

    主要讨论在maven项目下如何使用log4j:

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

    没有使用properties文件

    没有设置appenders

        final Logger logger = Logger.getLogger(this.getClass());
    
        public void h4j() {
            // logger.addAppender(new ConsoleAppender(new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN)));
            logger.info("hello");
            logger.error("test error");
        }
    

    输出结果

    log4j:WARN No appenders could be found for logger (l4j.Hello4j).
    log4j:WARN Please initialize the log4j system properly.
    log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
    

    提示:没有设置appenders

    代码设置appenders

        final Logger logger = Logger.getLogger(this.getClass());
    
        public void h4j() {
            logger.addAppender(new ConsoleAppender(new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN)));
            logger.info("hello");
            logger.error("test error");
        }
    

    输出结果

    0 [main] INFO l4j.Hello4j  - hello
    2 [main] ERROR l4j.Hello4j  - test error
    

    使用log properties

    详细解析1

    详细解析2

    详细解析3

    log4j+sl4j

    <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>1.6.1</version>
    </dependency>
    

    logback+sl4j

    添加logback依赖

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.1.7</version>
    </dependency>
    

    对比log4j和logback的配置文件

    logback配置和兼容性

    复杂问题

    因为我们在设计系统的时候,可能需要依赖很多其他的组件。但是这些组件都可能接入有自己的log框架,比如有使用log4j的,有使用common-log的等等。如果有些系统是使用了sl4j,那么就非常的简单集成即可。

    但是有些系统是直接使用了log 框架,比如直接使用了log4j,common-log。我们在实现的时候需要把这些系统中依赖的log4j,或者common-log去除掉。然后添加sl4j和log4j或者common-log桥连接插件即可。

    兼容性问题

    log之间的依赖关系

    排除其他框架中的log

    相关文章

      网友评论

          本文标题:Java log

          本文链接:https://www.haomeiwen.com/subject/aiixzftx.html