Log4j2 使用简单

2023-08-01 1623阅读

温馨提示:这篇文章已超过600天没有更新,请注意相关的内容是否还可用!

日志是系统中经常使用的一个功能。我们在调试时可以依靠日志来查看输出,在程序运行时通过查看日志来判断程序的运行状态。在Java世界里,有一个非常著名的日志库——Log4j。现在Log4j也有了新的版本,那就是Log4j2。要使用Log4j2,第一步是导入其jar包。如果按照之前的方式去做的话,你会发现实际上没有任何输出,只有这句话:ERROR StatusLogger No log4j2 configuration file found。前面已经简单演示了Log4j2的用法。Log4j2 可以使用配置文件进行配置,也可以使用代码以编程方式进行配置。Log4j2 支持多种配置文件,包括 XML、JSON、YAML 和属性文件。如果前面没有配置文件,Log4j2会使用默认配置,相当于下面的配置文件。到目前为止,大家应该基本能够使用Log4j2了。

日志是系统中经常使用的一个功能。 我们在调试时可以依靠日志来查看输出,在程序运行时通过查看日志来判断程序的运行状态。 在Java世界里,有一个非常著名的日志库——Log4j。 现在Log4j也有了新的版本,那就是Log4j2。 新版本的好处我就不多说了。 让我们开始吧。

Log4j2 简介

要使用Log4j2,第一步是导入其jar包。 如果是普通项目,请从log4j2官网下载jar包,然后将log4j-api-2.7.jar和log4j-core-2.7.jar添加到项目的classpath中。

如果使用Maven或者Gradle,就去mvn仓库查询找到这两个包,然后将其添加到项目依赖中。 这样准备工作就完成了。

然后打开项目,添加以下两句,创建Logger并调试一些信息。 注意,这里的Logger和LogManager类的全名分别是org.apache.logging.log4j.LogManager和org.apache.logging.log4j.Logger。 不要与 Java 附带的 java.util.logging 下的日志记录类混淆。

记录器记录器 = LogManager. 获取记录器();

logger.debug("5555555");

然后运行项目就可以看到相应的输出。

日志级别

如果按照之前的方式去做的话,你会发现实际上没有任何输出,只有这句话:ERROR StatusLogger No log4j2 configuration file found。 使用默认配置:仅将错误记录到控制台。这意味着由于未找到配置文件,因此使用默认日志级别,仅将错误消息输出到控制台。 这就引出了日志级别的问题。

日志分为几个级别,按降序排列:trace、debug、info、warn、error、fatal。 对应的Logger类也有几个对应的方法,用于输出对应的日志信息。 如果我们定义一个级别,低于该级别的日志将不会输出。 由于没有配置文件,因此默认日志级别为错误,如前面的输出所示。 这样低于error的日志就不会输出。 所以我们回到刚才,将debug方法改为error方法,再次运行项目。 这次出现了日志输出。

22:21:58.600 [测试人员] 错误 yitian.bean.BeanTest - 5555555

配置文件

前面已经简单演示了Log4j2的用法。 下面说一下Log4j2的配置文件。 Log4j2 可以使用配置文件进行配置,也可以使用代码以编程方式进行配置。 这里简单介绍一下配置文件的方法。 Log4j2 支持多种配置文件,包括 XML、JSON、YAML 和属性文件。 当然,XML 文件是最常用的。 只需将配置文件放在类路径中即可,如果使用 Maven 或 Gradle,则位于 resources 文件夹中。

如果前面没有配置文件,Log4j2会使用默认配置,相当于下面的配置文件。

10

11

12

13

配置文件中有两个主要地方。 第一个是 Appender 节点。 这个节点下会有很多Appender,也就是我们日志输出的目的地。 它可以是控制台或文件,甚至可以是专用的远程日志。 服务器。 默认情况下只有一个控制台。 第二个重要节点是 Loggers 节点。 该节点下可以有多个Logger。 每个Logger可以记录不同的信息,并且一些配置也可以在Logger之间共享。 上面定义了根记录器。 如果没有指定Logger的名称或者指定的Logger不存在,则会使用Root,并且Root Logger下的配置将默认被其他Logger继承,除非他们定义了自己的配置。

然后我们回头看Appenders节点,里面有这么一段话:

。 这里定义的是日志的输出格​​式。 我们简单说一下常用的输出格式。

%d{HH:mm:ss.SSS} 输出时间,精度为毫秒。

%t 打印当前线程的名称。

%-5level 输出日志级别,-5表示左对齐,固定宽度5个字符,不足则用空格补齐。

%logger 输出 Logger 名称,如果是 Root,则没有名称。

%msg日志信息,就是我们传入的信息。

%n 换行符。

%F 输出所在的文件名。

%L 输出行号。

%M 输出所在的方法的名称。

%l 输出语句的位置信息,包括文件名、类名、方法名和行号。

自定义配置

自定义记录器

说了这么多,现在我们可以开始自定义配置文件了。 首先,我们添加一个新的Logger来记录所有信息。 该记录器的名称是 TRACE_ALL。 这个Logger有两个属性,level指定日志级别,additivity指定传递性。 如果传递性指定为true,那么如果我们现在使用TRACE_ALL来记录一条debug级别的日志,由于debug级别也符合Root的记录范围,所以这条日志会被记录两次。 最后,我们指定使用上面的console Appender。

配置文件现在应该如下所示。

10

11

12

13

14

15

16

程序代码是这样的。 指定调用 getLogger 时要使用哪个 Logger。

记录器记录器 = LogManager. getLogger(“TRACE_ALL”);

(“5555555”);

自定义附加器

除了使用Console作为日志输出目的地之外,我们还可以定义其他输出,例如文件。 让我们创建一个新文件 Appender。 在Appenders节点下新建File节点,name和fileName属性分别指定Appender名称和目标文件名。 然后我们指定 TRACE_ALL Logger 将日志输出到控制台和文件。

10

11

12

13

14

15

16

17 号

18

19

20

再次运行程序,我们会发现这次对应的路径下多了一个文件,这个文件的内容就是我们的输出。

到目前为止,大家应该基本能够使用Log4j2了。 如果您有更复杂的需求,则需要自行查看相关信息。

参考

--------------------

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]