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