log日志使用及冲突解决

1 日志使用规范

应用中不应该直接使用日志系统(Log4j,Logback)中的API,而应该依赖使用日志框架SLF4J中的API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一


import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

private static final Logger logger = LoggerFactory.getLogger(Aoe.class);

日志配置统一版本

<properties>

<log4j2.version>2.8.2</log4j2.version>

</properties>

log4j适配log4j2框架

3.1  排除所有直接间接依赖的log4j的包

因为不能保证log4jxxx.jar在log4j-1.2-api之后执行,不排除会导致log4j的日志不能输出。

<exclusions>

 <exclusion>

<groupId>log4j</groupId>

<artifactId>log4j</artifactId>

</exclusion>

</exclusions>

3.2 Log4j2的jar包版本要统一

<dependency>

<groupId>org.apache.logging.log4j</groupId>

<artifactId>log4j-api</artifactId>

<version>${log4j2.version}</version>

</dependency>

<dependency>

<groupId>org.apache.logging.log4j</groupId>

<artifactId>log4j-core</artifactId>

<version>${log4j2.version}</version>

</dependency>

<dependency>

<groupId>org.apache.logging.log4j</groupId>

<artifactId>log4j-jcl</artifactId>

<version>${log4j2.version}</version>

</dependency>

3.3 Log4j适配log4j2的jar包与log4j2的jar包版本一致

<dependency>

<groupId>org.apache.logging.log4j</groupId>

<artifactId>log4j-1.2-api</artifactId>

<version>${log4j2.version}</version>

</dependency>

slf4j+log4j2

使用SLF4j+Log4j2时使用的桥接包是log4j-slf4j-impl

jar包版本同log4j2的版本

<dependency>

<groupId>org.apache.logging.log4j</groupId>

<artifactId>log4j-slf4j-impl</artifactId>

<version>${log4j2.version}</version>

</dependency>

其他需要排除的包

<exclusions>

<exclusion>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-log4j12</artifactId>

</exclusion>

  </exclusions>

<exclusions>

<exclusion>

<groupId>ch.qos.logback</groupId>

<artifactId>logback-classic</artifactId>

</exclusion>

</exclusions>

<exclusions>

<exclusion>

<groupId>org.apache.logging.log4j</groupId>

<artifactId>log4j-1.2-api</artifactId>

</exclusion>

<exclusion>

<groupId>log4j</groupId>

<artifactId>log4j</artifactId>

</exclusion>

</exclusions>

常见错误原因定位

6.1 SLF4J: Class path contains multiple SLF4J bindings.

slf4j-log4j12包冲突,排除即可

6.2 找不到log的配置文件

a)Log日志的配置文件log4j.xml查看是否存在

b)自定义log配置文件ConfigurationSource,注意这之前不要有日志的初始化及使用

其他常见的log相关包说明

7.1 slf4j-log4j12

slf4j与log4j的桥接包

7.2 slf4j-jdk14

slf4j到java.util.logging的桥接包

7.3 log4j-to-slf4j

将log4j2的接口适配到slf4j上,不能和log4j-slf4j-impl同时存在

7.4 slf4j-jcl

将slf4j适配到JCL上

7.5 Logback

Logback是由log4j创始人设计的另一个开源日志组件,详细见官网 http://logback.qos.ch

7.6 logback-classic

将slf4j适配到logback上

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。