将应用的log4j换成logback

将应用的log4j换成logback

考虑到log4j很久不更新、性能相对弱,以及一些项目本身的原因,经过较为谨慎的考虑,决定改用logback。迁移还是比较顺利的,花了1个小时左右就搞定了,做个简单的笔记。

(1) 首先去掉所有log4j相关的依赖,主要有:

<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId>
</dependency>

以及:

<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId>
</dependency>

(2) 为项目添加以下依赖:

<!-- logback日志配置开始 -->
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId>
</dependency>
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-access</artifactId>
</dependency>
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId>
</dependency>
<dependency><groupId>org.slf4j</groupId><artifactId>log4j-over-slf4j</artifactId>
</dependency>
<!-- logback日志配置结束 -->

(3) 删除项目/src/main/resources目录下的log4j.properties,并在该目录添加logback.xml文件,logback.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><Target>System.out</Target><encoder><pattern>%date [%level] [%thread] %logger{80} [%file : %line] %msg%n</pattern></encoder></appender><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><encoder><pattern>%date [%level] [%thread] %logger{80} [%file : %line] %msg%n</pattern></encoder><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${catalina.home}/logs/yzf/sql%d{yyyy-MM-dd}.log</fileNamePattern><!-- 保留 30天数据,默认无限--><MaxHistory>30</MaxHistory></rollingPolicy></appender><logger name="org.springframework" level="INFO" /><logger name="org.apache" level="INFO" /><logger name="com.itmuch" level="WARN" /><root level="INFO"><appender-ref ref="CONSOLE" /><appender-ref ref="FILE" /></root>
</configuration>

TIPS

(1) log4j-over-slf4j与slf4j-log4j12不能共存,可能会引发异常,详见http://www.tuicool.com/articles/INveIf 。

(2) slf4j-api、slf4j-log4j12以及log4j之间的关系http://blog.csdn.net/tengdazhang770960436/article/details/18006127

(3) 参考文档:http://blog.csdn.net/chenminghe271/article/details/38682493

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/659735.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MFC串行化的应用实例

之前写过一篇MFC串行化的博文;下面看一个具体例子; 新建一个单文档应用程序;在最后一步,把View类的基类改为CFormView; 然后在资源面板编辑自己的字段; 然后到doc类的头文件添加对应变量, public:CString name;int age;CString sex;CString dept;CString zhiwu;CStrin…

C#中的装箱和拆箱操作详解

在C#中&#xff0c;“装箱”&#xff08;Boxing&#xff09;和"拆箱"&#xff08;Unboxing&#xff09;是类型转换的过程&#xff0c;特别是在值类型和引用类型之间的转换。 1、 装箱&#xff08;Boxing&#xff09; 装箱是指将一个值类型&#xff08;例如整数、浮…

蓝桥杯2024/1/31----第十届省赛题笔记

题目要求&#xff1a; 1、 基本要求 1.1 使用大赛组委会提供的国信长天单片机竞赛实训平台&#xff0c;完成本试题的程序设计 与调试。 1.2 选手在程序设计与调试过程中&#xff0c;可参考组委会提供的“资源数据包”。 1.3 请注意&#xff1a; 程序编写、调试完成后选手…

JAVA Web 学习(二)ServLet

二、动态web 资源开发技术——Servlet Servlet&#xff08;小服务程序&#xff09;是一个与协议无关的、跨平台的Web组件&#xff0c;由Servlet容器所管理。运行在服务器端&#xff0c;可以动态地扩展服务器的功能&#xff0c;并采用“请求一响应”模式提供Web服务。 Servlet的…

将java对象转换为json字符串的几种常用方法

目录 1.关于json 2.实现方式 1.Gson 2.jackson 3.fastjson 3.与前端的联系 1.关于json JSON是一种轻量级的数据交换格式。它由Douglas Crockford在2001年创造。JSON的全称是JavaScript Object Notation&#xff0c;它是一种文本格式&#xff0c;可以轻松地在各种平台之间传…

一文详解docker compose

文章目录 1、前言2、Compose 简介3、compose的安装和卸载3.1、安装3.2、卸载3.3、使用 4、yml 配置指令参考5、Compose 命令说明5.1、命令对象与格式5.2、命令选项5.3、命令使用详细说明 6、compose使用案例6.1、准备6.2、Dockerfile 文件6.3、docker-compose.yml6.4、使用 Com…

C#学习笔记_类(Class)

类的定义 类的定义是以关键字 class 开始&#xff0c;后跟类的名称。类的主体&#xff0c;包含在一对花括号内。 语法格式如下&#xff1a; 访问标识符 class 类名 {//变量定义访问标识符 数据类型 变量名;访问标识符 数据类型 变量名;访问标识符 数据类型 变量名;......//方…

基于低代码的管理系统模板库的设计与实现

近年来&#xff0c;随着企业管理需求的不断增长&#xff0c;传统的软件开发方式显得过于繁琐&#xff0c;低代码开发平台应运而生。本文基于低代码开发理念&#xff0c;探讨了管理系统模板库的设计与实现&#xff0c;旨在提高开发效率、降低系统维护成本&#xff0c;并使管理系…

EXCEL VBA调用百度API翻译

EXCEL VBA调用百度API翻译 Public Function translateZh_En(ByVal str As String) As String调用百度翻译API&#xff0c;将指定内容由中文翻译为英文Dim par As StringDim data() As Stringpar generateReqStr(str, "zh", "en")data() translateJson(g…

正则表达式与文本三剑客

目录 一、正则表达式 1. 定义 2. 字符匹配 3. 重复限定符 4. 位置锚点 5. 分组和引用 6. 扩展正则表达式 二、文本三剑客 1. grep 1.1 定义 1.2 语法 1.3 选项 1.4 示例 2. sed 2.1 定义 2.2 通式 2.3 选项 2.4 脚本格式&#xff08;脚本语法&#xff09; 2.…

【Unity3D小功能】Unity3D中Text使用超链接并绑定点击事件

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 在开发中遇到了要给Text加超链接的需求&#xff0c;研究了实现…

什么样的评论更容易得到别人的关注

要发表吸引人的评论&#xff0c;可以注意这些个方面&#xff1a; 合适的软件&#xff1a;用DT浏览器的笔记本写文本&#xff0c;保存为图片&#xff0c;用图片的方式评论更容易得到别人的关注。 特别的观点&#xff1a;发表与众不同的观点&#xff0c;或者从不同的角度看待问…

USACO 1月比赛 铜组题解

比赛链接&#xff1a;http://usaco.org/ 第一题&#xff1a;MAJORITY OPINION 标签&#xff1a;思维、模拟题意&#xff1a;给定一个长度为 n n n的序列 a a a&#xff0c;操作&#xff1a;若区间 [ i , j ] [i,j] [i,j]内某个数字 k k k出现的次数 大于区间长度的一半&#…

已解决解决java.util.concurrent.BrokenBarrierException异常的正确解决方法,亲测有效!!!

已解决解决java.util.concurrent.BrokenBarrierException异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 报错原因 解决思路 解决方法 总结 在并发编程中&#xff0c;CyclicBarrier是Java提供的一个同步辅助工具类&#xff…

WiFi基础知识介绍(超详细)

1.WiFi专业名词概念 AP(Access Point):无线接入点&#xff1a;这个概念特别广&#xff0c;在这里&#xff0c;用大白话说&#xff0c;你可以把CC3200当做一个无线路由器&#xff0c;这个路由器的特点不能插入网线&#xff0c;没有接入Internet&#xff0c;只能等待其他设备的链…

C语言中的数组操作技巧:提升程序的效率和可读性

1. 概念 数组是C语言中常见且重要的数据结构&#xff0c;在许多应用中都被广泛使用。合理地处理数组操作可以提高程序的效率和可读性。本文将介绍C语言中常用的数组操作方法和技巧&#xff0c;帮助读者优化数组操作并提升程序效果。 2.常用的数组操作方法 2.1 数组的初始化 C…

canvas自定义扩展方法:文字自动换行

查看专栏目录 canvas实例应用100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…

hyperf 二十四 模型缓存

教程&#xff1a;Hyperf 一 安装及配置 1.1 安装 目前仅支持redis。 composer require hyperf/model-cache 1.2 配置 配置位置&#xff1a;config/autoload/databases.php 配置类型默认值备注handlerstringHyperf\ModelCache\Handler\RedisHandler::class无cache_keystri…

python时间格式数据处理。

由于编码和格式问题&#xff0c;有时候从read_csv或者read_excel读取到的时间类型是不确定的。 1.字符串转datetime.datetime时间格式 如果是字符串string类型&#xff0c;则可以使用&#xff1a; df[PDATE] pd.to_datetime(df[PDATE]).dt.date 转换为date格式&#xff0c…

开发安全之:Header Manipulation

Overview 方法 echo_json() 包含未验证的数据&#xff0c; 这会招致各种形式的攻击&#xff0c;包括&#xff1a;cache-poisoning、cross-site scripting、cross-user defacement、page hijacking、cookie manipulation 或 open redirect。 Details 以下情况中会出现 Header …