日志是系统中经常使用的一个功能。我们在调试时可以依靠日志来查看输出,在程序运行时通过查看日志来判断程序的运行状态。在Java世界里,有一个非常著名的日志库——Log4j。现在Log4j也有了新的版本,那就是Log4j2。要使用Log4j2,第一步是导入其jar包。如果按照之前的方式去做的话,你会发现实际上没有任何输出,只有这句话:ERRORStatusLoggerNolog4j2configurationfilefound。前面已经简单演示了Log4j2的用法。Log4j2可以使用配置文件进行配置,也可以使用代码以编程方式进行配置。Log4j2支持多种配置文件,包括XML、JSON、YAML和属性文件。如果前面没有配置文件,Log4j2会使用默认配置,相当于下面的配置文件。到目前为止,大家应该基本能够使用Log4j2了。
日志是系统中经常使用的一个功能。我们在调试时可以依靠日志来查看输出,在程序运行时通过查看日志来判断程序的运行状态。在Java世界里,有一个非常著名的日志库——Log4j。现在Log4j也有了新的版本,那就是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.获取记录器();
然后运行项目就可以看到相应的输出。
如果按照之前的方式去做的话,你会发现实际上没有任何输出,只有这句话:ERRORStatusLoggerNolog4j2configurationfilefound。使用默认配置:仅将错误记录到控制台。这意味着由于未找到配置文件,因此使用默认日志级别,仅将错误消息输出到控制台。这就引出了日志级别的问题。
日志分为几个级别,按降序排列: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会使用默认配置,相当于下面的配置文件。
配置文件中有两个主要地方。第一个是Appender节点。这个节点下会有很多Appender,也就是我们日志输出的目的地。它可以是控制台或文件,甚至可以是专用的远程日志。服务器。默认情况下只有一个控制台。第二个重要节点是Loggers节点。该节点下可以有多个Logger。每个Logger可以记录不同的信息,并且一些配置也可以在Logger之间共享。上面定义了根记录器。如果没有指定Logger的名称或者指定的Logger不存在,则会使用Root,并且RootLogger下的配置将默认被其他Logger继承,除非他们定义了自己的配置。
然后我们回头看Appenders节点,里面有这么一段话:
。这里定义的是日志的输出格式。我们简单说一下常用的输出格式。

%-5level输出日志级别,-5表示左对齐,固定宽度5个字符,不足则用空格补齐。
%logger输出Logger名称,如果是Root,则没有名称。
%msg日志信息,就是我们传入的信息。
%l输出语句的位置信息,包括文件名、类名、方法名和行号。
说了这么多,现在我们可以开始自定义配置文件了。我们添加一个新的Logger来记录所有信息。该记录器的名称是TRACE_ALL。这个Logger有两个属性,level指定日志级别,additivity指定传递性。如果传递性指定为true,那么如果我们现在使用TRACE_ALL来记录一条debug级别的日志,由于debug级别也符合Root的记录范围,所以这条日志会被记录两次。我们指定使用上面的consoleAppender。
配置文件现在应该如下所示。
程序代码是这样的。指定调用getLogger时要使用哪个Logger。
记录器记录器=LogManager.getLogger(“TRACE_ALL”);
除了使用Console作为日志输出目的地之外,我们还可以定义其他输出,例如文件。让我们创建一个新文件Appender。在Appenders节点下新建File节点,name和fileName属性分别指定Appender名称和目标文件名。然后我们指定TRACE_ALLLogger将日志输出到控制台和文件。
再次运行程序,我们会发现这次对应的路径下多了一个文件,这个文件的内容就是我们的输出。
到目前为止,大家应该基本能够使用Log4j2了。如果您有更复杂的需求,则需要自行查看相关信息。
免责声明1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明。
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所
提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在
转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并白负版权等法律责任。
本文来源:国外服务器--log4j2配置详解(log4j日志输出格式)
本文地址:https://www.idcbaba.com/guowai/2377.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。