老系统中log4j切换到logback

基于SLF4J,可以无缝的将log4j切换到logback。

1、引入logback依赖

<slf4j-version>1.7.5</slf4j-version>
<log4j-over-slf4j-version>1.7.5</log4j-over-slf4j-version>
<logback-version>1.1.7</logback-version>

......
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${slf4j-version}</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>log4j-over-slf4j</artifactId>
    <version>${log4j-over-slf4j-version}</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>${logback-version}</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>${logback-version}</version>
</dependency>

2、删除log4j和slf4j-log4j12依赖

注意有的jar包可能间接引用了log4j,此时需要exclusions掉,如:

查找哪些jar包间接引用了log4j:打开pom.xml——>切换到Dependency Hierarchy——>搜索log4j。

3、将logback.xml加到项目中,保证编译到classpath目录下

logback.xml例子参考:https://files.cnblogs.com/files/acyouai/logback-example.xml

系统中log4j.properties无用了,可以删掉

4、其他问题

有的系统可能还是用的log4j在打日志,原因可能是maven中部分包间接的引用了log4j的包导致。需要在代码中显示的将log4j的引用改为slf4j。

  • 如果用了lombok,只需将注解@log4j替换为@Slf4j
  • 如果是显示的定义log实例,只需将

private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class);

替换为
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);

原文地址:https://www.cnblogs.com/acyouai/p/8440955.html

时间: 2024-08-22 21:38:35

老系统中log4j切换到logback的相关文章

Linux系统中用户切换

1. Linux系统中用户切换的命令为su,语法为: su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]] 参数说明 -f , –fast:不必读启动文件(如 csh.cshrc 等),仅用于csh或tcsh两种Shell. -l , –login:加了这个参数之后,就好像是重新登陆一样,大部分环境变量(例如HOME.SHELL和USER等)都是以该使用者(USER)为主,并 且工作目录也会改变.如果没有指

Linux 系统中用户切换(su user与 su - user 的区别)

1. Linux系统中用户切换的命令为su,语法为: su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]] 参数说明 -f , –fast:不必读启动文件(如 csh.cshrc 等),仅用于csh或tcsh两种Shell. -l , –login:加了这个参数之后,就好像是重新登陆一样,大部分环境变量(例如HOME.SHELL和USER等)都是以该使用者(USER)为主,并 且工作目录也会改变.如果没有指

Linux 系统中用户切换

1. Linux系统中用户切换的命令为su,语法为: su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]] 参数说明 -f , –fast:不必读启动文件(如 csh.cshrc 等),仅用于csh或tcsh两种Shell. -l , –login:加了这个参数之后,就好像是重新登陆一样,大部分环境变量(例如HOME.SHELL和USER等)都是以该使用者(USER)为主,并 且工作目录也会改变.如果没有指

当敏捷开发遇上了千年老怪的老系统....

敏捷开发中,当必需和没文档,没单元测试的老系统共舞时,就宛如是一场陷入泥沼的恶战.恶梦...... 在敏捷开发中,当必需和老系统奋战时,光只是 "看" 老系统的源代码,不仅耗时,耗尽体力,更是完全无效的:完全无法梳理清楚老系统中的业务.代码逻辑与相互间的依赖. 这世上永远是极复杂的问题,却只需极简单的解决方案-- ① 将在老系统上所需做的事:如:搬迁老系统的业务到新系统上,在老系统上加新特性.新功能--:均划分成 User Stories. ② 依照每个 User Story的目的,&

关于ssdcrm老系统数据迁移到新系统的系列实施办法

由于最近不断有客户提到crm老系统数据迁移的问题,为了切实帮助大家解决这个实际困难.本技术组近期将分批写出处理办法.今天我们先介绍一下5x系统的评论信息如何迁移到7x新系统. 关于老系统评论导入新系统的解决办法 问题描述: 5x系统的各个模块中带的评论信息,保存在ec_modcomments表中(通过phpmyadmin访问).直接导出该表的ec_modcomments.sql文件. 7x系统中的表结构与老系统有区别.主要是crmid的值不同.比如:5x系统中,一条联系记录模块带的评论信息,它对

虚拟机-linux系统中图形界面和命令行界面切换

linux系统中图形化界面和命令行界面之间的切换可以分为两种,临时性切换和永久性切换. 临时性切换即切换后只对本次生效,系统重启后界面还是默认界面. 永久性切换即切换后系统开机后永远处于的界面. 临时性切换方法 图形界面切换命令行界面: 打开控制终端,输入init 3,然后回车 命令行界面切换图形界面: 输入init 5,然后回车 永久性切换方法 打开/etc/inittab文件 # inittab is only used by upstart for the default runlevel

从Log4j迁移到LogBack的理由

英文原文:Reasons to prefer logback over log4j 无论从设计上还是实现上,Logback相对log4j而言有了相对多的改进.不过尽管难以一一细数,这里还是列举部分理由为什么选择logback而不是log4j.牢记logback与log4j在概念上面是很相似的,它们都是有同一群开发者建立.所以如果你已经对log4j很熟悉,你也可以很快上手logback.如果你喜欢使用log4j,你也许会迷上使用logback. 更快的执行速度 基于我们先前在log4j上的工作,l

log4j升级到logback

虽然现在log4j已经基本上不更新很久了,但实际上升级log4j到logback最大的难度并不在于本身的替换,而是现有大量的三方jar依然使用log4j,以至于无法100%的exclude掉,所以很有可能是无法做到纯粹将log4j升级到logback的.在我们的很多系统中,就如此. 如果是使用slf4j作为facade的话,是可以无缝的升级的,但是如果直接使用了Log4j中的类,恐怕就无能为力了. maven依赖: <dependency>              <groupId&g

Linux 系统中堆栈的使用方法

本节内容概要描述了Linux内核从开机引导到系统正常运行过程中对堆栈的使用方式.这部分内容的说明与内核代码关系比较密切,可以先跳过.在开始阅读相应代码时再回来仔细研究. Linux 0.12系统中共使用了4种堆栈.第1种是系统引导初始化时临时使用的堆栈:第2种是进入保护模式之后提供内核程序初始化使用的堆栈,位于内核代码地址空间固定位置处.该堆栈也是后来任务0使用的用户态堆栈:第3种是每个任务通过系统调用,执行内核程序时使用的堆栈,我们称之为任务的内核态堆栈.每个任务都有自己独立的内核态堆栈:第4