log4j2和slf4j,log4j是什么,老生常谈Log4j和Log4j2的区别(推荐)

log4j2和slf4j,log4j是什么,老生常谈Log4j和Log4j2的区别(推荐)

下面小编就给大家带来一个关于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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: