• logback不输出日志消息,且SLF4J绑定源错误


    我之前的项目已经成功使用过logback作为日志输出,但是今天新项目在使用的时候,不输出日志信息。

    最后终于找到问题所在,并成功解决。解决步骤如下:

    第一步:检查pom.xml

    按照以往惯例,我先检查了pom.xml文件,看看logback的引用jar是否都存在:

           <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>1.2.1</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-core</artifactId>
                <version>1.2.1</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.7.21</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-access</artifactId>
                <version>1.2.1</version>
            </dependency>

    经检查,jar包是齐全的,而且已经成功加载到本地:

    第二步:查看日志输出引用类是否正确

    private static final org.slf4j.Logger LOG= org.slf4j.LoggerFactory.getLogger(MyTest.class);  

    LOG.info("======info");  

    没有发现异常

    第三步:检查logback.xml

    只有最简单的控制台输出打印,也无异常

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration scan="false" scanPeriod="3 seconds">
        <contextName>solr</contextName>
        <property name="log_dir" value="D:\\log\\solr" />
    
        <!-- 控制台打印 -->
        <appender name="ConsoleAppender" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <!-- %logger输出完整类名 %file仅输出类名 -->
                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %msg %file:%line%n</Pattern>
            </encoder>
        </appender>
    
        <!-- 从低到高ALL、 TRACE 、 DEBUG 、INFO 、WARN 、ERROR 、OFF  参考ch.qos.logback.classic.Level类   -->
        <root level="INFO"> 这个root由logger节点替代,因为可以分不同包管理不同的日志文件
            <appender-ref ref="ConsoleAppender" />
        </root>
    </configuration>

    第四步:检查控制台消息

    我仔细看了下控制台打印消息,发现SLF4J在警告重复绑定,而且实际绑定的并非我指定的:

    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/D:/root/workspace_bigdata/solr/src/main/webapp/WEB-INF/lib/slf4j-log4j12-1.7.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/D:/root/repository/ch/qos/logback/logback-classic/1.2.1/logback-classic-1.2.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
    log4j:WARN No appenders could be found for logger (com.solr.SolrTest).
    log4j:WARN Please initialize the log4j system properly.
    log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

    经排查,我发现在WEB-INF\lib目录下和pom.xml中重复导入了slf4j-api的jar包,而且是不同版本号的,但这实际上并不影响日志打印。

    最后发现,在WEB-INF\lib目录下我还引入了另外两个jar:

    log4j-1.2.17.jar slf4j-log4j12-1.7.7.jar

    直接导致logback.xml配置的日志无效。

    最后移除这两个jar,日志打印正常。

    支付宝扫一扫,为女程序员打赏!
    作者:梦幻朵颜
    版权:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    SpringCloud-服务注册与实现-Eureka创建服务注册中心(附源码下载)
    SpringCloud -创建统一的依赖管理
    Mysql、Oracle、SQLServer等数据库参考文档免费分享下载
    DevExpress的图形按钮菜单栏控件WindowsUIButtonPanel的布局、使用和设置按钮的点击事件
    Winform中设置ZedGraph鼠标滚轮缩放的灵敏度以及设置滚轮缩放的方式(鼠标焦点为中心还是图形中心点)
    Winform中设置多条Y轴时新增的Y轴刻度不显示问题解决
    Winforn中设置ZedGraoh的GraphPane恢复到初始比例大小
    Winform中设置ZedGraph多条Y轴时与多条曲线一一对应
    Winform中设置ZedGraph多条Y轴时坐标轴左右显示设置
    一、关于a标签伪类中的visited不起作用问题
  • 原文地址:https://www.cnblogs.com/zhuwenjoyce/p/6519009.html
Copyright © 2020-2023  润新知