为什么 apache.commons.logging.Log 不会记录调试级别?

Why apache.commons.logging.Log won't log Debug level?

我有一个 J2SE 桌面应用程序,我想了解如何使用 apache commons 日志记录。我的项目中有以下属性文件,使用最新的 apache commons 日志记录:

公地-logging.properties:

org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger

#Priorities are: DEBUG, INFO, WARN, ERROR, or FATAL.
log4j.rootCategory=DEBUG
log4j.appender.appender.Threshold=DEBUG

log4j.properties:

log4j.rootLogger=TRACE

logging.properties:

# jdk handlers
handlers=java.util.logging.ConsoleHandler java.util.logging.FileHandler

# default log level FINE=ERROR FINER= FINEST=
.level=FINEST
java.util.logging.ConsoleHandler.level=FINEST

# log file name for the FileHandler
java.util.logging.FileHandler.pattern=gef_debug.log

而且,即使所有设置为 FINEST 或 TRACE,我仍然只在控制台上记录信息和错误。

知道这里出了什么问题吗?

--

顺便说一下,我在一个现有的旧项目中,所以可能有一些我不知道的配置,它阻止了我的日志...:/ 但仅限于 DEBUG 级别。

org.apache.commons.logging.Log= org.apache.commons.logging.impl.Jdk14Logger

我认为这一行意味着您正在使用 Jdk14Logger,而不是 Log4j

Jdk14Logger读取文件log-config.properties。只需在应用程序类路径中创建它并进行设置。例如:

# The following creates the console handler
handlers=java.util.logging.ConsoleHandler
# Set the default logging level for the root logger
.level=FINEST
# Set the default logging level
java.util.logging.ConsoleHandler.level=ALL

# Set the default formatter
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter

您还可以通过将 commons-logging.properties 的第一行更改为 org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger 来将记录器更改为 Log4j。

通过这样做,您将使用从 log4j.properties 读取的 Log4J 记录器,因此您需要向其添加控制台处理程序。

你可以看看几个日志实现here