下面小编就给大家带来一个关于Log4j和Log4j2区别的老生常谈(推荐)。我觉得边肖挺好的。我现在就分享给你,给你一个参考。来和边肖一起看看吧。
相信程很多朋友对log4j都很熟悉,log4j可以说是陪伴了大部分朋友开始编程。我不知道log4j之前用的是什么,至少在我的职业生涯中,是log4j带我开启了log时代。
Log4j是Apache的开源项目。我们不研究它的起源时间,但据我所知,log4j 1已经不再更新了。
回头看看log4j,给我们留下了多少回忆。我记得早些年,当mybatis还叫ibatis的时候,我有多少个夜晚挣扎着配置ibatis控制台来打印日志,以及当我最终配置好它时所感受到的喜悦。事不宜迟,我用列举的方式简单说一下log4j和log4j 2的区别。
1、配置文件类型
Log4j使用一个. properties文件作为主配置文件,但是现在log4j 2已经放弃了这种方法,使用。xml,json或者。做这件事。也许这也是技术发展的一种必然。毕竟属性文件的可读性真的有点差。
2、核心JAR包
Log4j只需要引入一个jar包,
属国
groupIdlog4j/groupId
artifactIdlog4j/artifactId
版本1 . 2 . 17/版本
/依赖关系
一个
?2
三
四
五
一个
?2
三
四
五
而log4j 2需要两个内核。
属国
groupId org . Apache . logging . log4j/groupId
artifactId log 4j-core/artifactId
版本2.5/版本
/依赖关系
属国
groupId org . Apache . logging . log4j/groupId
artifactIdlog4j-api/artifactId
版本2.5/版本
/依赖关系
一个
?2
三
四
五
六
七
八
九
?10
一个
?2
三
四
五
六
七
八
九
?10
有没有注意到log4j和log4j 2的包路径不一样?Apache已经更新了包路径以区分它们,因此您甚至可以在一个项目中使用两个版本的日志输出!(不过我觉得你没那么调皮,呵呵)
3、文件渲染
为了让log4j生效,我们需要在web.xml中配置它,
听众
listener-class org . spring framework . web . util . log 4 jconfiglistener/listener-class
/listener上下文参数
param-name log 4 jconfiglocation/param-name
param-value class path:config/log4j . properties/param-value
/content-param
上下文参数
param-name log 4 jrefresh interval/param-name
参数值60000/参数值
一个
?2
三
四
五
六
七
八
九
?10
一个
?2
三
四
五
六
七
八
九
?10
这个配置的目的是告诉项目在哪里加载log4j配置文件,并定义一个扫描器,以便可以根据需要放置log4j配置文件。
Log4j2比较简单。以maven项目为例,我们只需要把log4j2.xml放在项目资源目录下。记住一个细节,是log4j2.xml,不是log4j.xml,xml名称里没有2是不行的!
喜欢学习的朋友有兴趣可以研究一下。据我估计应该是配置死在log4j2的包里了,可以试试如何自定义log4j2.xml的位置
4、Log调用
Log4j和log4j2调用非常简单。
log4j:
导入org . Apache . log4j . logger;
private final Logger Logger=Logger . get Logger(test . class . getname());
一个
?2
一个
?2
log4j2:
导入org . Apache . logging . log4j . level;
导入org . Apache . logging . log4j . log manager;
导入org . Apache . logging . log4j . logger;
私有静态记录器Logger=log manager . get Logger(test . class . getname());
一个
?2
三
四
一个
?2
三
四
5、配置文件方式
最重要的区别是配置文件的不同。使用的时候可以根据自己的情况进行配置。
log4j2的示例如下:
?xml版本='1.0 '编码='UTF-8 '?
配置状态=“错误”
!-首先定义所有appenders
附加器
!-此输出控制台的配置-
控制台名称='控制台'目标='系统输出'
!-控制台只输出级别及以上的信息(onMatch),其他直接拒绝(onMismatch) -
匹配时阈值筛选级别=' trace '=不匹配时阈值筛选级别=' ACCEPT '=' DENY '/
!-这个都知道是输出日志的格式-
图案布局模式='%d{HH:mm:ss .SSS } %-5级% class { 36 } % L % M-% msg % xEx % n '/
/控制台
!-文件会打印出所有信息,这个原木每次运行程序会自动清空,由附加属性决定,这个也挺有用的,适合临时测试用-
!-追加为真实的表示消息增加到指定文件中,假的表示消息覆盖指定的文件内容,默认值是真的-
文件名='日志'文件名='log/test.log '追加='假'
图案布局模式='%d{HH:mm:ss .SSS } %-5级% class { 36 } % L % M-% msg % xEx % n '/
/文件
!-添加过滤器阈值过滤器,可以有选择的输出某个级别以上的类别onMatch='接受onMismatch='拒绝'意思是匹配就接受,否则直接拒绝-
文件名='错误'文件名='日志/错误。日志'
阈值筛选级别在匹配时为“错误”,在不匹配时为“接受”,在不匹配时为“拒绝”
图案布局模式='%d{yyyy .mm . DD ' at ' HH:mm:ss z } %-5级% class { 36 } % L % M-% msg % xEx % n '/
/文件
!-这个会打印出所有的信息,每次大小超过尺寸,则这大小大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-
滚动文件名='滚动文件'文件名=' logs/web。“日志”
file pattern=' logs/$ $ { date:yyyy-MM }/web-% d { MM-DD-yyyy }-% I . log。广州
模式布局pattern=' % d { yyyy-MM-DD ' at ' HH:MM:ss z } %-5级别% class { 36 } % L % M-% msg % xEx % n '/
SizeBasedTriggeringPolicy size=' 2MB '/
/滚动文件
/appenders
!-然后定义伐木工,只有定义了记录器并引入的阑尾切除术,阑尾切除术才会生效-
记录器
!-建立一个默认的根的记录器-
根级别='trace '
appender-ref ref='RollingFile'/
appender-ref ref='Console'/
appender-ref ref='ERROR' /
appender-ref ref='log'/
/root
/记录器
/配置
以上这篇老生常谈Log4j和Log4j2的区别(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。