log4j 不读取其 log4j.properties 文件

log4j doesn't read its log4j.properties file

在 Maven 项目中,我将 log4j.properties 文件放在 src\main\resources 目录中,这似乎是通常放置它的地方。但是它似乎没有读取它或者有我看不到一个错误,因为我的记录器不打印 DEBUG 级别的消息(尽管它确实打印 INFO 级别的消息)并且也不创建 logs.log 文件。 这是我正在使用的 log4j.properties 文件:

# Root logger option
log4j.rootLogger=DEBUG, file, stdout

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=D:/.../src/main/resources/META-INF/logs.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Direct log messages to stdout
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=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

我也尝试过在我的 运行 配置中将路径传递给 log4j.properties 文件,但它也没有用: -Dlog4j.configuration=file:D:/.../src/main/resources/log4j.properties 该项目是通过不同的绑定项目启动的,因此我使用了可能不正确的整个文件路径,因为 none 我见过的示例提供了完整路径。

我们用于 运行 应用程序的服务器是 Wildfly 8.1.0,它有自己的 log4j 记录器,所以这可能会以某种方式干扰?

这是我的拦截器应该创建日志的部分:

final static Logger logger = Logger.getLogger(RestInterceptor.class);
...    
if(e instanceof ApplicationException) {
        logger.debug(e.getMessage(), e);
        //TODO remove these when done testing
        logger.debug("debug is working");
        logger.info("info is working");
        return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();
    }

但是只有 "info is working" 正在打印。

您确定 src\main\resources 在您的构建路径上吗?

右键单击您的项目 -> Java 构建路径 [源选项卡]

确保资源文件夹在构建路径中。 还要确保排除的模式 = '**'

好的,我设法解决了这个问题。这是由于 Wildfly 的记录器干扰了我的记录器造成的。我在 standalone.xml 中添加了 <use-deployment-logging-config value="false"/> 行 但这还不够。在进一步挖掘之后,我还发现并添加了以下行 <add-logging-api-dependencies value="false"/>,它终于开始工作了。 虽然我对这个解决方案并不完全满意,但我想它总比没有好,也许值得分享。

简而言之,将其添加到您的 standalone.xml 中,如果您使用的是 Wildfly 8,它应该可以解决日志记录冲突:

<subsystem xmlns="urn:jboss:domain:logging:2.0"> <add-logging-api-dependencies value="false"/> <use-deployment-logging-config value="false"/> ... </subsystem>

更新spring版本。它对我有用。