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版本。它对我有用。
在 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版本。它对我有用。