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

时间:2016-05-22 19:57:15

标签: java apache logging log4j

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

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级别。

1 个答案:

答案 0 :(得分:1)

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