Log4j2 使用简单

2023-08-01 1609阅读

日志是系统中经常使用的一个功能。我们在调试时可以依靠日志来查看输出,在程序运行时通过查看日志来判断程序的运行状态。在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节点,里面有这么一段话:

Log4j2 使用简单

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

%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

Log4j2 使用简单

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购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]