如何检查是否log4j.properties加载了www.example.com?

8zzbczxx  于 2022-11-06  发布在  其他
关注(0)|答案(2)|浏览(195)

我正在使用log4j(编译组slf 4j,运行时组logback),并在www.example.com文件中进行配置log4j.properties。
我认为我使用此选项正确配置了它

log4j.rootLogger=INFO, stdout, file

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
log4j.appender.stdout.threshold=info

log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=/home/user/logging.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=20
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%-5p [%d{dd.MM.yy HH:mm:ss}] %C{1} - %m [thread: %t]\n
log4j.appender.file.threshold=info

但当我运行调试消息时,比如

logger.debug("foo")

我在控制台中看到与我的模式不匹配的输出。
下一个问题是文件(/home/user/logging.log)中没有任何内容,所以我认为我的属性文件没有加载,不知道如何修复它。
我把我的log4j.properties文件放在我的Eclipse项目的根目录下,在resources(src/main/resources)中,但是仍然没有任何改变。我把我的Project文件夹正确地放在类路径中。

**编辑:**问题是我使用Logbackhttp://logback.qos.ch/)作为运行时记录器,但此库使用logback.xml配置文件,而不是使用org.apache.log4j库的log4j.properties

w6mmgewl

w6mmgewl1#

根据日志记录级别INFODEBUG,这就是logger.debug("foo")不会被记录的原因。
这是日志记录级别,按从最特定到最不特定的顺序排列

DEBUG > INFO > WARN > ERROR > FATAL

如果启用了INFO,则也将启用低于该级别的日志记录级别。
尝试

log4j.rootLogger=DEBUG, stdout, file
...
log4j.appender.stdout.threshold=debug
...
log4j.appender.file.threshold=debug

xsuvu9jc

xsuvu9jc2#

为了回答这个问题
如何检查是否log4j.properties加载了www.example.com?
log4j的内部调试可以通过设置log4j.debug系统属性来启用。在启动过程中,log4j日志显示配置是从哪里加载的以及如何加载的。
例如,

java -Dlog4j.debug -Dlog4j.configuration=file:/path/to/log4j.properties -jar ...

在这里,当在VM参数中添加-Dlog4j.debug时,在启动期间将生成以下控制台日志。

log4j: Using URL [file:C:/<...PATH..removed...>/resources/test_logging.properties] for automatic log4j configuration.
log4j: Reading configuration from URL file:C:/<...PATH..removed...>/resources/test_logging.properties
log4j: Parsing for [root] with value=[DEBUG, console].
log4j: Level token is [DEBUG].
log4j: Category root set to DEBUG
log4j: Parsing appender named "console".
log4j: Parsing layout options for "console".
log4j: Setting property [conversionPattern] to [%d DmccClient[%X{PID}] :%t: %c:%L %-4p - %m%n].
log4j: End of parsing for "console".
log4j: Setting property [immediateFlush] to [true].
log4j: Setting property [target] to [System.out].
log4j: Setting property [encoding] to [UTF-8].
log4j: Parsed "console" options.
log4j: Level token is [FINEST#org.apache.log4j.helpers.UtilLoggingLevel].
log4j: toLevel:class=[org.apache.log4j.helpers.UtilLoggingLevel]:pri=[FINEST]
log4j: Parsing appender named "console".
log4j: Appender "console" was already parsed.
log4j: Finished configuring.

另请参阅:answerthis question的问题有助于找到答案。

相关问题