【发布时间】:2015-11-06 14:11:34
【问题描述】:
在一个 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
这个项目是通过一个不同的绑定项目启动的,所以我使用了整个文件路径,这可能是不正确的,因为我见过的示例都没有提供完整路径。
我们用来运行应用程序的服务器是 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();
}
但是只有“信息正在工作”正在打印。
【问题讨论】:
-
这就是我在启动客户端时传递它的方式:-Dlog4j.configuration=file:///D:/dev/settings/log4j.agility.properties 你错过了'/ //' 在您的示例中的“文件:”之后。也许就是这样?
-
另外,请确保在您的 maven 依赖树中加载了正确的日志提供程序。我曾经遇到过冲突,我必须为包含日志提供程序的依赖项包含
。 -
我添加了 '///' 但不幸的是它并没有解决问题。
标签: java maven logging log4j wildfly-8