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,日志打印正常。
logback不输出日志消息,且SLF4J绑定源错误的更多相关文章
- logback异步输出日志(生产者消费者模型),并非批量写入日志。
一直对logback异步输出日志误解为异步批量写入日志. 今天看了源代码. 首先logback的异步日志是如何配置的: <!-- 管理端用户行为日志异步输出,异步的log片段必须在同步段后面,否 ...
- logback kafkaAppender输出日志到kafka
官网地址https://github.com/danielwegener/logback-kafka-appender 本文以spring boot项目为基础,更多的信息,请参考官网 https:// ...
- Log4j官方文档翻译(四、如何在java中输出日志消息)
我们已经创建来配置文件,本章详细的介绍下如何生成调试信息,并把他们转化成文本文件. 基本的例子 下面就是创建的一个基本的例子: log4j.properties的内容为: log = /usr/hom ...
- (七)logback 异步输出日志
<!-- 异步输出 --> <appender name="ASYNC-INFO" class="ch.qos.logback.classic.Asyn ...
- SiftingAppender logback 动态 输出 日志 到指定日志文件
SiftingAppender https://www.mkyong.com/logging/logback-different-log-file-for-each-thread/
- springboot的日志框架slf4j (使用logback输出日志以及使用)
1.为什么使用logback? ——在开发中不建议使用System.out因为大量的使用会增加资源的消耗.因为使用System.out是在当前线程执行的,写入文件也是写入完毕之后才继续执行下面的程序. ...
- .NET Core下的日志(3):如何将日志消息输出到控制台上
当我们利用LoggerFactory创建一个Logger对象并利用它来实现日志记录,这个过程会产生一个日志消息,日志消息的流向取决于注册到LoggerFactory之上的LoggerProvider. ...
- logback.xml解读----日志配置解读
初次接触javaweb项目的日志是log4j文件,但是后来发现通过配置logback.xml文件实现日志输出非常好用.经过上午的学习,现总结如下: 直接上配置文件和注释: <?xml versi ...
- 如何查看MapReduce执行的程序中的输出日志
我们开发程序的时候,好多人都喜欢用sysout输出内容来查看运行情况.但是在MR程序里写了之后,却不知道去哪里查找,可以参考这篇文章. 第一种方法,我们可以在MapReduce任务查看页面找到这些日志 ...
随机推荐
- ndarray对象的使用方法
ndarray的基本操作 1.索引 基本索引:一维与list完全一致 多维同理 例如: import numpy ndarr1 = numpy.random.randint(0,10.size=5) ...
- 1023. Camelcase Matching驼峰式匹配
网址:https://leetcode.com/problems/camelcase-matching/ 依题意可得逻辑 class Solution { public: vector<bool ...
- 快速高效实现微信小程序图片上传与腾讯免费5G存储空间的使用
本文介绍了如何在微信小程序开发中使用腾讯官方提供的云开发功能快速实现图片的上传与存储,以及介绍云开发的 5G 存储空间的基本使用方法,这将大大提高微信小程序的开发效率 对于一般的图片上传功能开发,我们 ...
- 分布式监控系统(类zabbix)
目录: 为什么要做监控? 监控系统业务需求分析: 监控系统架构设计: 监控系统表结构设计: 一.为什么要做监控系统? 市面上已经有很多成熟的监控系统,例如zabbix.nagios,为什么自己开发监控 ...
- JDBC数据库连接工具
什么是JDBC? JDBC是一种可以执行sql语句的Java API,提供对数据库的访问方法. 什么是JDBC驱动? JDBC连接数据库需要驱动,驱动是两个设备要进行通信,满足一定的数据驱动格式.一般 ...
- Django的下载与项目的创建
一.Django的下载安装 Django官网下载页面 二.DOS窗口下的django项目从创建和启动 1. DOS窗口下载Django pip3 install django==1.11.9 2.DO ...
- vue+canvas踩坑之旅
let img=new Image(); if(img.complete) { console.log('dd'); } img.src="http://localhost:8888/sta ...
- redis-cluster配置
为什么要用redis-cluster 1.并发问题 redis官方生成可以达到 10万/每秒,每秒执行10万条命令假如业务需要每秒100万的命令执行呢? 2.数据量太大 一台服务器内存正常是16~25 ...
- windows 安装nvm步骤(shi'yongnvm-windows管理node版本):
瞎几把前言:mac上可以用n来管理node版本,私以为n很好用.家里的win7台式机一直没有安装过任何管理工具,今天来给家里电脑安装一下nvw-windows,一个用于windows系统的node版本 ...
- 自动化测试badboy脚本开发(一)
badboy的检查点: 检查点设置例子:以上一节脚本录制方法简单录制搜索“badboy”脚本,在搜索框中选中搜索内容(注意录制脚本后要停止录制)→点击工具栏中的Tools→选择Add Assertio ...