log4j+slf4j迁移到log4j2+slf4j (Servlet3.0)
近期对系统中的旧项目实现log升级,选择了log4j2来取代log4j。作为最新一代的log实现。log4j2好在那里能够直接看log4j2性能章节。
这里写写怎样从log4j升级到log4j2。
1. maven依赖的变化。对log4j的依赖变成了对log4j2的依赖,在实际使用过程中发现过旧的jboss logging会有问题,使用了3.3.0.Final支持log4j2的版本号。
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jul</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>${jboss-logging.version}</version>
</dependency>
<dependency>
- log4j配置的变化。配置文件从log4j.xml变成了log4j2.xml,配置文件的内容也有非常大不同。log file如今能够同一时候支持时间和文件大小切割。并且log4j2支持log的动态变化载入。直接指定监控周期就可。以下给出一个简单配置样例。
样例中使用了async模式。rollfile本身必须设置成immediateflush=“false”,然后创建一个async 节点,通过async节点网rollfile里面写日志。注意为了显示文件行数,方法名等信息增加了includelocation=“true”,在官方文档对这个有特别说明。对性能有影响。能不用就不用。另:log4j2支持很多其它的filter机制,有兴趣能够好好看看,对复杂日志系统的日志过滤非常有帮助。
对于真实环境中,error/aduit日志须要单独存放。最好不使用async模式,防止log丢失。log4j环境要实现同一时候按时间和大小截断日志文件的话能够考虑结合操作系统的cronjob来实现按时间截断打包,log4j本身指关心按大小截断。
<?xml version="1.0" encoding="UTF-8"?>
<configuration monitorInterval="60">
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
</Console>
<RollingFile name="RollingFile" fileName="logs/sample.log"
filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz" immediateFlush="false" append="true">
<PatternLayout pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
<SizeBasedTriggeringPolicy size="50 MB" />
<DefaultRolloverStrategy max="10" />
</RollingFile>
<Async name="Async" includeLocation="true">
<AppenderRef ref="RollingFile" />
</Async>
</appenders>
<loggers>
<logger name="com.cloud.demo" additivity="false" level="trace">
<AppenderRef ref="Async" level="trace"/>
</logger>
<AsyncLogger name="com.cloud.demo.service.impl.NewsServiceImpl" level="trace" includeLocation="false">
<AppenderRef ref="RandomAccessFile"/>
</AsyncLogger>
<logger name="org.springframework" additivity="false" level="warn">
<AppenderRef ref="Async" level="warn"/>
</logger>
<root level="info">
<AppenderRef ref="Async"/>
</root>
</loggers>
</configuration>
- Web项目中使用log4j的变化。由于log4j2能够自己主动监听log配置文件修改,所以一般使用的spring log4j listener就不再须要了,在servlet3.0中不须要在web.xml增加不论什么log4j2的配置,假设是servlet2.5就须要增加Log4jServletContextListener和Log4jServletFilter等配置,详细可见log4j2在Web中配置
log4j+slf4j迁移到log4j2+slf4j (Servlet3.0)的更多相关文章
- log4j2单独的配置与使用&log4j2+slf4j的结合的配置与使用
转载自:https://github.com/iamyong 一.log4j2单独的配置与使用 所用jar文件 log4j-api-2.8.2.jar log4j-core-2.8.2.jar 配置文 ...
- log4j2+slf4j+junit
dependencies: compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.21' compile group: 'org.a ...
- log4j.xml 为什么要使用SLF4J而不是Log4J
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SY ...
- Servlet3.0+springmvc5+log4j2正确的开启姿势(WebLookUp)
前言 java社区占据市场份额比较大的日志组件由log4j 1.×,到logback,再到整合后的升级版 log4j 2.×,有网友测试后据说log4j2的性能最NB.于是开始往自己的springmv ...
- java日志框架log4j详细配置及与slf4j联合使用教程
最后更新于2017年02月09日 一.log4j基本用法 首先,配置log4j的jar,maven工程配置以下依赖,非maven工程从maven仓库下载jar添加到“build path” <d ...
- [转载]java日志框架log4j详细配置及与slf4j联合使用教程
一.log4j基本用法 首先,配置log4j的jar,maven工程配置以下依赖,非maven工程从maven仓库下载jar添加到“build path” 1 2 3 4 5 <dependen ...
- java日志框架log4j详细配置及与slf4j使用教程
一.log4j基本用法 首先,配置log4j的jar,maven工程配置以下依赖,非maven工程从maven仓库下载jar添加到“build path” 1 2 3 4 5 <dependen ...
- log4j平稳升级到log4j2
一.前言 公司中的项目虽然已经用了很多的新技术了,但是日志的底层框架还是log4j,个人还是不喜欢用这个的.最近项目再生产环境上由于log4j引起了一场血案,于是决定升级到log4j2. 二.现象 虽 ...
- SpringMVC快速使用——基于XML配置和Servlet3.0
SpringMVC快速使用--基于XML配置和Servlet3.0 1.官方文档 https://docs.spring.io/spring-framework/docs/5.2.8.RELEASE/ ...
随机推荐
- django 笔记9 分页知识整理
感谢老男孩 自定义分页 XSS:攻击 默认字符串返回 {{page_str|safe}} 前端 from django.utils.safestring import mark_safe page_s ...
- Random words
To choose a random word from the histogram, the simplest algorithm is to build a list with multiple ...
- SSRS 报表 如何匿名查看
SSRS 报表 如何匿名查看 昨晚一直研究怎么能匿名访问报表然后给客户看呢? 研究了好几种办法 我试过的分为三种,其中推荐我认为相对可控一点. .修改SSRS配置文件来禁止他验证登陆用户权限 操作过的 ...
- Slimming Paint (a.k.a. Redesigning Painting and Compositing)
Slimming Paint is a Paint team project to re-implement the Blink<->cc picture recording API to ...
- error_reporting()函数
定义和用法 error_reporting() 函数跪地你给应该报告何种 PHP 错误. error_reporting() 函数能够在运行时设置 error_reporting 指令. PHP 有诸 ...
- 学习优化《机器学习与优化》中文PDF+英文PDF
正在学习机器学习中的优化处理,感觉<机器学习与优化>写得还是比较通俗易懂的,第七章特征选择我需要,特征提取:相关系数,相关比,熵和互信息..更高级的应该是文本挖掘的特征提取,比如LDA提取 ...
- 一:1.1 python程序与数据储存【进制转换】
二进制 :0 1 [逢二进一]0+0=00+1=11+1=1011+1=100 1 1+ 1------ 100 八进制: 0 1 2 3 4 5 6 7 [逢八进一] 1+7=101+2=3 十进制 ...
- Vue代理&跨域
Vue 本地代理 纯前端技术解决跨域 vue-axios获取数据很多小伙伴都会使用,但如果前后端分离且后台没设置跨域许可,那要怎样才能解决跨域问题? 常用方法有几种: 通过jsonp跨域 通过修改do ...
- java流1----InputStream、OutputStream、Reader、Writer
字节流和字符流 顾名思义,字节流就是操作的是字节,字符流操作的就是字符.其中字节流又可以分为字节输入流(InputStream)和字节输出流(OutputStream).同样的字符流也可以分为字符输入 ...
- Android——4.2 - 3G移植之路之 AT 通信 (四)
在前文Android--4.2 - 3G移植之路之 reference-ril .pppd 拨号上网 (三)中分析了3G连接网络的流程,当中有说道通过AT指令建立连接, 在这里记录一下3G中的AT通信 ...