-1

我有一个有趣的问题,我目前正在开发一个 Java 项目,该项目由几个 Java 类和 Spring Hibernate 组合组成。这个项目是由许多比我更早工作的开发人员构建的,现在为了理解它,我必须调试项目并交叉检查日志以了解流程。在 logs.properties 中,我在根级别找到了这个设置:

log4j.rootLogger=ERROR, CONSOLE

这清楚地表明最高优先级给予 ERROR 级别现在我的查询是我将其设置为:

log4j.rootLogger=DEBUG,ERROR,CONSOLE 

将 DEBUG 放在前面以提高 DEBUG 的优先级,因为我想在日志中检查在流程移动时在后台一个接一个地调用了哪些 Java 类。我已经检查了有 log.debug 语句的 Java 类。这一切都正确吗?

4

1 回答 1

0

我想你明白什么log4j.rootLogger=ERROR, CONSOLE意思。它没有说明优先级。实际上,优先级在级别的上下文中没有任何意义。实际上,它说的是根记录器(继承所有记录器)的记录级别是“错误”;即默认情况下,只会处理 ERROR 和更高级别(即更严重)的日志事件。(它还将“CONSOLE”附加程序附加到根记录器......)

所以当你写的时候log4j.rootLogger=DEBUG,ERROR,CONSOLE,它实际上没有意义。您是说 LEVEL 既是 DEBUG 又是 ERROR ......但不能两者兼而有之。(实际发生的事情是任何人的猜测......因为它超出了规范。)


至于你想要做什么:

...保持 DEBUG 领先以增加 DEBUG 的优先级,因为我想在日志中检查哪些 java 类在后台被调用,因为流程正在移动,并且我已经检查了 java 类log.debug 语句在那里。

我很难理解那个“句子”是什么意思。但是,如果您试图影响日志事件在日志中出现的顺序,那么您就不走运了。它们以(大致)Logger调用顺序出现,并且(AFAIK)您无法更改顺序。

(AFAIK,日志事件排序是“尽力而为”。保证严格的时间顺序会带来并发瓶颈,当日志过度影响应用程序吞吐量时,人们不喜欢它。)

于 2013-10-20T06:10:12.227 回答