log4j与slf4j冲突的解决与思考

log4j与logback冲突的解决与思考

maven项目使用log4j或者slf4j(Simple logging Facade for Java)生成日志

参考博客log4j   https://blog.csdn.net/qq_38941812/article/details/87975938

和我廖雪峰大神的博客slf4j   https://www.liaoxuefeng.com/wiki/1252599548343744/1264739155914176

这个问题解决了一下午,自己把自己坑了~~~~

  1. 首先我们使用log4j

1.1 去maven仓库下载log4j在pom.xml中的配置

log4j在maven仓库中的配置下载地址

Commons Logging和Log4j这一对好基友

1.2 src同级(也可以建立目录,百度的不准哈)创建并设置log4j.properties

####Loggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR < FATAL,分别用来指定这条日志信息的重要程度

设置###

输出信息到控制抬

log4j.appender.stdout = org.apache.log4j.ConsoleAppender

log4j.appender.stdout.Target = System.out

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

log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

输出DEBUG 级别以上的日志到=XX/logs/debug.log

log4j.appender.D = org.apache.log4j.DailyRollingFileAppender

log4j.appender.D.File = /Users/lishan/Desktop/code/newcpw/clientParamWatch-service/src/logHistory/debug.log

log4j.appender.D.Append = true

log4j.appender.D.Threshold = DEBUG

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

log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

输出ERROR 级别以上的日志到=XX/logs/error.log

log4j.appender.E = org.apache.log4j.DailyRollingFileAppender

log4j.appender.E.File =/Users/lishan/Desktop/code/newcpw/clientParamWatch-service/src/logHistory/error.log

log4j.appender.E.Append = true

log4j.appender.E.Threshold = ERROR

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

log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

输出INFO 级别以上的日志到=XX/logs/info.log

log4j.appender.I = org.apache.log4j.DailyRollingFileAppender

log4j.appender.I.File =/Users/lishan/Desktop/code/newcpw/clientParamWatch-service/src/logHistory/info.log

log4j.appender.I.Append = true

log4j.appender.I.Threshold = INFO

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

log4j.appender.I.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

输出WARN 级别以上的日志到=XX/logs/wran.log

log4j.appender.W = org.apache.log4j.DailyRollingFileAppender

log4j.appender.W.File =/Users/lishan/Desktop/code/newcpw/clientParamWatch-service/src/logHistory/warn.log

log4j.appender.W.Append = true

log4j.appender.W.Threshold = WARN

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

log4j.appender.W.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

输出FATAL 级别以上的日志到=XX/logs/fatal.log

log4j.appender.F = org.apache.log4j.DailyRollingFileAppender

log4j.appender.F.File =/Users/lishan/Desktop/code/newcpw/clientParamWatch-service/src/logHistory/fatal.log

log4j.appender.F.Append = true

log4j.appender.F.Threshold = FATAL

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

log4j.appender.F.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

log4j.rootLogger = DEBUG, stdout, D, E, I, W, F

log4j.additivity.org.apache=true

参考博客   https://www.jianshu.com/p/ccafda45bcea

再在下方的链接中将log4j.properties的配置复制放进去

log4j详细配置

1.3 顶部-File-Project Structure-Modules-Source-src/logHistory-Resource-OK即可

1.4 创建Demo-LogTest

package com.alibaba.sdksearch;

import org.apache.log4j.Logger;

//import org.slf4j.Logger;

//import org.slf4j.LoggerFactory;

public class LogTest {

private static Logger logger = Logger.getLogger(LogTest.class);

//    以下是slf4j的代码调用

//private static Logger logger = LoggerFactory.getLogger(LogTest.class);

 1/**
 2 * @param args
 3 */
 4public static void main(String[] args) {
 5    // System.out.println("This is println message.");
 6
 7    // 记录debug级别的信息
 8    logger.debug("This is debug message.===log4j还是slf4j");
 9    // 记录info级别的信息
10    logger.info("This is info message..===log4j还是slf4j");
11    // 记录error级别的信息
12    logger.error("This is error message..===log4j还是slf4j");
13
14    System.out.println("xxx");
15}

运行结果如下,在查看src/LogHistory,出现info.log   error.log

1.5 本来以上是OK的,结果自己傻,同时百度博客同时搜索内网其他人的代码,导致pom.xml中多写了slf4j的依赖--也就是下面的这段配置!!!导致包冲突了 !!! 导致日志文件写不到info error warning,一直为空。。。。。。。。反思:做事情要专一,不能看到玉米丢了苹果~~就是这个问题,解决了一下午,晚上突然觉得是不是配置的问题,要感谢一个高P RD一句话提示了我。

所以 这2段配置是不可以同时写在一起的,必须注释掉一个!

<!--httpclient begin-->
<dependency>
    <groupId>org.apach.httpclient</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.1</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.2</version>
</dependency>

<dependency>
    <groupId>commons-httpclient</groupId>
    <artifactId>commons-httpclient</artifactId>
    <version>3.1</version>
</dependency>

<!--https://mvnrepository.com/artifact/log4j/log4j的配置,Commons Logging和Log4j这一对好基友-->
<!--<dependency>-->
<!--<groupId>log4j</groupId>-->
<!--<artifactId>log4j</artifactId>-->
<!--<version>1.2.17</version>-->
<!--</dependency>-->

<!--<dependency>-->
<!--<groupId>commons-logging</groupId>-->
<!--<artifactId>commons-logging</artifactId>-->
<!--<version>1.1.2</version>-->
<!--</dependency>-->

<!--以上是log4j的maven配置,如下是slf4j的配置,2者不可并存,二选一!!!-->

<!--slf4j配置,注释log4j-->
<dependency>
    <groupId>com.alibaba.schedulerx</groupId>
    <artifactId>schedulerx2-spring-boot-starter</artifactId>
    <version>0.3.2</version>
    <exclusions>
        <!--<exclusion>-->
        <!--<artifactId>log4j</artifactId>-->
        <!--<groupId>log4j</groupId>-->
        <!--</exclusion>-->
        <exclusion>
            <artifactId>slf4j-log4j12</artifactId>
            <groupId>org.slf4j</groupId>
        </exclusion>
        <exclusion>
            <artifactId>config</artifactId>
            <groupId>com.typesafe</groupId>
        </exclusion>
        <!--<exclusion>-->
        <!--<artifactId>akka-slf4j_2.11</artifactId>-->
        <!--<groupId>com.typesafe.akka</groupId>-->
        <!--</exclusion>-->
    </exclusions>


</dependency>

1.6 其实我使用log4j 配置好日志,但觉得也要顺应公司潮流,自己搞了下slf4j ,但其实配置文件是log4j的。也就是我无意中试了https://blog.51cto.com/jack88/2135471?source=dra   这个博客里的第6种情况,日志也是可以写进去的。。。但为了统一性,最后我改成了log4j。最后项目迁移改成了slf4j

待续

待续

发布了45 篇原创文章 · 获赞 11 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_42498050/article/details/102978368