美文网首页
log日志使用及冲突解决

log日志使用及冲突解决

作者: 微笑_3917 | 来源:发表于2020-05-09 19:12 被阅读0次

    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上

    相关文章

      网友评论

          本文标题:log日志使用及冲突解决

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