当前位置: 首页 > news >正文

logback的使用

1 logback概述

SLF4J的日志实现组件关系图如下所示。

SLF4J,即Java中的简单日志门面(Simple Logging Facade for Java),它为各种日志框架提供简单的抽象接口。

SLF4J最常用的日志实现框架是:log4j、logback。一般有slf4j+log4j、slf4j+log4j2、slf4j+logback三种日志组合。下面将介绍logback的简单使用和使用中遇到的常见问题。

2 引入依赖

        <!--logback--><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency>

3 新增配置

在resources文件夹下面创建logback.xml配置文件。举例如下。

<?xml version="1.0" encoding="UTF-8"?>
<configuration><appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"><layout class="ch.qos.logback.classic.PatternLayout"><Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{1000}-%M:%L - %msg%n</Pattern></layout></encoder></appender><appender name="logstash" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>/app/logs/demoForStudy/logstash.log</file><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!-- rollover daily --><FileNamePattern>/app/logs/demoForStudy/logstash.%d{yyyy-MM-dd}-%i.log</FileNamePattern><!-- each file should be at most 10MB, keep 2 days worth of history, but at most 100MB --><maxFileSize>10MB</maxFileSize><maxHistory>2</maxHistory><totalSizeCap>100MB</totalSizeCap><!-- archive removal will be executed on appender start up --><cleanHistoryOnStart>true</cleanHistoryOnStart></rollingPolicy><layout class="ch.qos.logback.classic.PatternLayout"><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{1000}-%M:%L - %msg%n</pattern></layout></appender><!--    <logger name="com.test" level="warn" additivity="false" >-->
<!--        <appender-ref ref="stdout" />-->
<!--    </logger>--><root level="INFO"><appender-ref ref="stdout" />  <!-- 输出到控制台 --><appender-ref ref="logstash" />   <!-- 输出到logstash --></root></configuration>

参数说明如下。

  • appender(输出源):主要控制日志输出到哪里,比如:文件、数据库、控制台打印等。
  • logger(记录器):用来设置某一个包或者具体某一个类的日志打印级别、以及指定 appender。
  • root:也是一个 logger,是一个特殊的父 logger。所有的子 logger 最终都会将输出流交给 root,除非在子 logger 中配置了additivity=“false”。
  • rollingPolicy:指定滚动策略,按照一定周期或文件大小切割存放日志文件,以及指定日志文件的最大大小。
     

4 问题排查

可能出现的问题如下。

4.1 LoggerFactory is not a Logback LoggerContext but Logback is on the classpath

4.1.1 报错

启动报错如下:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/softwareInstall/maven/repository/org/slf4j/slf4j-log4j12/1.7.30/slf4j-log4j12-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/softwareInstall/maven/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.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]
Exception in thread "main" java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.slf4j.impl.Log4jLoggerFactory loaded from file:/softwareInstall/maven/repository/org/slf4j/slf4j-log4j12/1.7.30/slf4j-log4j12-1.7.30.jar). If you are using WebLogic you will need to add 'org.slf4j' to prefer-application-packages in WEB-INF/weblogic.xml: org.slf4j.impl.Log4jLoggerFactoryat org.springframework.util.Assert.instanceCheckFailed(Assert.java:702)at org.springframework.util.Assert.isInstanceOf(Assert.java:621)at org.springframework.boot.logging.logback.LogbackLoggingSystem.getLoggerContext(LogbackLoggingSystem.java:290)at org.springframework.boot.logging.logback.LogbackLoggingSystem.beforeInitialize(LogbackLoggingSystem.java:117)at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationStartingEvent(LoggingApplicationListener.java:232)at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:213)at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127)at org.springframework.boot.context.event.EventPublishingRunListener.starting(EventPublishingRunListener.java:76)at org.springframework.boot.SpringApplicationRunListeners.lambda$starting$0(SpringApplicationRunListeners.java:53)at java.util.ArrayList.forEach(ArrayList.java:1257)at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:117)at org.springframework.boot.SpringApplicationRunListeners.starting(SpringApplicationRunListeners.java:53)at org.springframework.boot.SpringApplication.run(SpringApplication.java:317)at org.springframework.boot.SpringApplication.run(SpringApplication.java:1309)at org.springframework.boot.SpringApplication.run(SpringApplication.java:1298)at com.hn.liao.study.DemoForStudyApplication.main(DemoForStudyApplication.java:37)

4.1.2 问题原因

从报错可知,因为在项目中存在两种SLF4J的日志实现组件:slf4j-log4j12和logback-classic,即日志实现组件的包冲突导致项目启动报错。

4.1.3 排除slf4j-log4j12依赖

  • 首先右键pom.xml文件,通过选项“Maven->show Depedencies”显示项目中包的依赖关系;
  • 然后在依赖关系文件中直接搜索“slf4j-log4j12”找到该包;
  • 最后选中该包右键,通过选项“Exclude”直接排除此依赖。

操作截图如下所示。

5 参考文献

(1)Chapter 4: Appenders

(2)logback详解

(3)IDEA 报错 LoggerFactory is not a Logback LoggerContext but Logback is on the classpath

(4)springboot 日志配置(logback)_springboot logback配置

相关文章:

logback的使用

1 logback概述 SLF4J的日志实现组件关系图如下所示。 SLF4J&#xff0c;即Java中的简单日志门面&#xff08;Simple Logging Facade for Java&#xff09;&#xff0c;它为各种日志框架提供简单的抽象接口。 SLF4J最常用的日志实现框架是&#xff1a;log4j、logback。一般有s…...

IntelliJ IDEA无公网远程连接Windows本地Mysql数据库提高开发效率

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;…...

VS Code使用教程

链接远程服务器 https://blog.csdn.net/zhaxun/article/details/120568402 免密登陆服务器 1生成客户机&#xff08;个人PC&#xff09;密令 ssh-keygen -t rsa生成的文件在主目录的.ssh文件当中。 查看密令并复制到linux系统当中 cat id_rsa.pub 2复制到服务器中 echo …...

StarRocks数据模型之主键模型(当前版本v3.1)

StarRocks表设计数据模型&#xff0c;有四种&#xff1a;分别是明细模型&#xff08;Dumplicate Key table&#xff09;&#xff0c;聚合模型&#xff08;Aggregate table&#xff09;&#xff0c;更新模型&#xff08;Unique Key table&#xff09;&#xff0c;主键模型&#…...

正确使用React组件缓存

简介 正常来讲的话当我们点击组件的时候&#xff0c;该组件以及该组件的子组件都会重新渲染&#xff0c;但是如何避免子组件重新渲染呢&#xff0c;我们经常用memo来解决 React.memo配合useCallback缓存组件 父组件没有传props const Index ()> {console.log(子组件刷新…...

AMEYA360:大唐恩智浦荣获 2023芯向亦庄 “汽车芯片50强”

2023年11月28日&#xff0c;由北京市科学技术委员会和北京市经济和信息化局指导、北京经济技术开发区管理委员会主办、盖世汽车协办的“芯向亦庄”汽车芯片大赛在北京亦庄成功闭幕。 在本次大赛中 大唐恩智浦的 电池管理芯片DNB1168 (应用于新能源汽车BMS系统) 凭卓越的性能及高…...

在Arch Linux上安装yay

有点麻烦。 准备 # pacman -Syu # pacman -S --needed base-devel git 变身为普通用户 不能使用root下载代码。所以要变身为普通用户&#xff1a; # sueradd tsit # su tsit 下载代码 $ git clone https://aur.archlinux.org/yay.git 编译安装 $ cd yay $ makepkg -si…...

PHP案例:探究MySQL应用开发喜好的网络调查

文章目录 一、知识准备(一)数据库与表的创建(二)录入调查选项(三)创建问卷页面(四)处理投票数据(五)显示调查结果二、实现步骤(一)创建数据库与表(二)录入若干调查选项(三)创建问卷页面(四)创建调查结果页面(五)体验运行结果(六)查看最终生成的HTML代码很…...

力扣第374场周赛题解

这一场周赛的题目是比较难的一次&#xff0c;写了1个多小时就写了两个题目。 首先第一题&#xff1a; 纯水题&#xff0c;遍历然后进行一下判断就可以解决了。这边就不放代码了。 第二题&#xff1a; 这个题目&#xff0c;我觉得难度非常大&#xff0c;其实代码量也不大都是很…...

Linux Docker 安装Nginx

1.21、查看可用的Nginx版本 访问Nginx镜像库地址&#xff1a;https://hub.docker.com/_/nginx 2、拉取指定版本的Nginx镜像 docker pull nginx:latest #安装最新版 docker pull nginx:1.25.3 #安装指定版本的Nginx 3、查看本地镜像 docker images 4、根据镜像创建并运行…...

鸿蒙应用开发(二)环境搭建

开发流程 IDE下载 首先下载HUAWEI DevEco Studio&#xff0c;介绍首次启动DevEco Studio的配置向导&#xff1a; 运行已安装的DevEco Studio&#xff0c;首次使用&#xff0c;请选择Do not import settings&#xff0c;单击OK。安装Node.js与ohpm。node.js 是基于 V8 引擎构…...

在 Qt Creator 中编写 Doxygen 风格的注释

2023年12月10日&#xff0c;周日上午 如何生成Doxygen 风格的注释 在需要Doxygen 风格注释的函数上方输入 /**&#xff0c;然后按下 Enter 键。Qt Creator 将自动为你生成一个注释模板。 输入&#xff0c;Qt Creator会自动帮你补全Doxygen标签 不得不说&#xff0c;写了Doxyge…...

NSS [NSSCTF 2022 Spring Recruit]babyphp

NSS [NSSCTF 2022 Spring Recruit]babyphp 考点&#xff1a;PHP特性 开局源码直接裸奔 <?php highlight_file(__FILE__); include_once(flag.php);if(isset($_POST[a])&&!preg_match(/[0-9]/,$_POST[a])&&intval($_POST[a])){if(isset($_POST[b1])&&…...

ToolkenGPT:用大量工具增强LLM

深度学习自然语言处理 原创作者&#xff1a;cola 用外部工具增强大型语言模型(LLM)已经成为解决复杂问题的一种方法。然而&#xff0c;用样例数据对LLM进行微调的传统方法&#xff0c;可能既昂贵又局限于一组预定义的工具。最近的上下文学习范式缓解了这一问题&#xff0c;但有…...

2022蓝桥杯c组求和

题目名字 求和 题目链接 题意 输入的每个数都要两两相乘&#xff0c;然后再加起来&#xff0c;求最后总和&#xff1b; 思路 每个数乘这个数的前缀和即可 算法一&#xff1a;前缀和 实现步骤 先把前缀和写出来再写for循环每个数都乘以自己的前缀和&#xff1b; 实现步骤 直接…...

Altium Designer学习笔记11

画一个LED的封装&#xff1a; 使用这个SMD5050的封装。 我们先看下这个芯片的功能说明&#xff1a; 5050贴片式发光二极管&#xff1a; XL-5050 是单线传输的三通道LED驱动控制芯片&#xff0c;采用的是单极性归零码协议。 数据再生模块的功能&#xff0c;自动将级联输出的数…...

TTS | 2019~2023年最新增强/生成情绪的语音合成调研(20231211更新版)

本博客主要是 增强/生成情绪的语音合成调研&#xff0c;论文按照时间顺序排列&#xff0c;且有些论文为期刊会议论文&#xff0c;有的是arxiv论文&#xff0c;在本文中&#xff0c;标识如下&#xff1a; 【&#x1f50a;ICML 】【✨Interspeech 】【&#x1fae7;ICASSP】 20…...

搜狗输入法v模式 | 爱莉希雅皮肤

搜狗输入法v模式 | 爱莉希雅皮肤 前言爱莉希雅皮肤v模式 前言 搜狗输入法有v模式&#xff0c;v模式是一个转换和计算的功能组合。拥有数字转换、日期转换、算式计算、函数计算等功能。本文介绍如何使用v模式&#xff0c;并附赠一个爱莉希雅的皮肤&#xff0c;可通过百度网盘下…...

2023年阿里云云栖大会-核心PPT资料下载

一、峰会简介 历经14届的云栖大会&#xff0c;是云计算产业的建设者、推动者、见证者。2023云栖大会以“科技、国际、年轻”为基调&#xff0c;以“计算&#xff0c;为了无法计算的价值”为主题&#xff0c;发挥科技平台汇聚作用&#xff0c;与云计算全产业链上下游的先锋代表…...

JavaScript实战:制作一个待办事项列表应用

JavaScript实战&#xff1a;制作一个待办事项列表应用 引言 在本教程中&#xff0c;我们将一步步创建一个简单的待办事项列表应用&#xff0c;这不仅会帮助你学习基本的JavaScript编程概念&#xff0c;还会教会你如何处理事件以及操作DOM。这个项目是面向初学者的&#xff0c…...

4面百度软件测试工程师的面试经验总结

没有绝对的天才&#xff0c;只有持续不断的付出。对于我们每一个平凡人来说&#xff0c;改变命运只能依靠努力幸运&#xff0c;但如果你不够幸运&#xff0c;那就只能拉高努力的占比。 2023年7月&#xff0c;我有幸成为了百度的一名测试工程师&#xff0c;从外包辞职了历经1000…...

textarea文本框回车enter的时候自动提交表单,根据内容自动高度

切图网近期一个bootstrap5仿chatgpt页面的项目遇到的&#xff0c;textarea文本框回车enter的时候自动提交表单&#xff0c;根据内容自动高度&#xff0c;代码如下&#xff0c;亲测可用。 <textarea placeholder"Message ChatGPT…" name"" rows"&q…...

dubbo框架技术文档-《spring-boot整合dubbo框架搭建+配置文件》框架的本地基础搭建

阿丹&#xff1a; 目前流行的微服务更多的就是dubbo和springcould微服务。之前阿丹没有出过dubbo相关的文章&#xff0c;因为之前接触springcould的微服务概念比较多一点&#xff0c;但是相对于springcould来说&#xff0c;springcould服务之间的调用是大多是使用了nacos&#…...

中通快递单号查询入口,将指定某天签收的单号筛选出来

批量查询中通快递单号的物流信息&#xff0c;将指定某天签收的单号筛选出来。 所需工具&#xff1a; 一个【快递批量查询高手】软件 中通快递单号若干 操作步骤&#xff1a; 步骤1&#xff1a;运行【快递批量查询高手】软件&#xff0c;并登录 步骤2&#xff1a;点击主界面左…...

MySQL-含json字段表和与不含json字段表查询性能对比

含json字段表和与不含json字段表查询性能对比 说明: EP_USER_PICTURE_INFO_2:不含json字段表 20200729json_test:含有json字段表 其中20200729json_test 标准ID、MANAGER_NO、PHONE_NO 为非json字段 data为json字段 2个表中MANAGER_NO、PHONE_NO都创建了各自的索引 测试…...

如何用Docker快速搭建本地开发环境

&#x1f4e2; 声明&#xff1a; &#x1f344; 大家好&#xff0c;我是风筝 &#x1f30d; 作者主页&#xff1a;【古时的风筝CSDN主页】。 ⚠️ 本文目的为个人学习记录及知识分享。如果有什么不正确、不严谨的地方请及时指正&#xff0c;不胜感激。 直达博主&#xff1a;「…...

SpringDataJPA基础

简介 Spring Data为数据访问层提供了熟悉且一致的Spring编程模版&#xff0c;对于每种持久性存储&#xff0c;业务代码通常需要提供不同存储库提供对不同CURD持久化操作。Spring Data为这些持久性存储以及特定实现提供了通用的接口和模版。其目的是统一简化对不同类型持久性存储…...

程序员如何成为自由的独立开发者?

你是不是那个整天坐在电脑前敲代码的程序员朋友&#xff1f;作为程序员&#xff0c;你是否也曾思考过如何成为一名独立开发者&#xff1f;思考过究竟如何踏上这段充满挑战和创造的旅程&#xff1f; 现在这个数码时代&#xff0c;技术不断演进&#xff0c;越来越多的程序员朋友…...

Ant Design Vue(v1.7.8)a-table组件的插槽功能

本案例中&#xff0c;编写了一个名为stockAdd的vue&#xff08;v2.5.17&#xff09;自定义组件&#xff0c;使用a-table组件的插槽功能&#xff0c;创建了一个可编辑的数据表格&#xff1a; 表格用于添加采购的物品&#xff0c;点“新增物品”按键&#xff0c;表格添加一行&…...

笔记69:Conv1d 和 Conv2d 之间的区别

笔记地址&#xff1a;D:\work_file\&#xff08;4&#xff09;DeepLearning_Learning\03_个人笔记\4. Transformer 网络变体 a a a a a a a a a a a...