繁体   English   中英

使用tomcat的log4j不会记录在MVN测试中记录的内容

[英]log4j with tomcat does not log what is logged in mvn test

我有一个Web应用程序。 当我运行“ mvn test”时,它会将调试消息记录到控制台,如我所配置的那样。 但是,当我将其部署到tomcat时,看不到应用程序的日志。 我绝对确定我在战争中的正确位置获得了log4j.properties文件,就像我在根目录的已部署的/var/lib/tomcat7/webapps/worldmodel/WEB-INF/classes/log4j.properties中更改值时一样记录器或休眠模式,并触摸web.xml,我看到/找到了休眠的调试日志。 但是我无法使用任何尝试的配置来记录应用程序的调试消息。 这是我进行日志记录的方法:

import org.apache.log4j.Level;
import org.apache.log4j.Logger;

logger = Logger.getLogger(BaseObject.class);
log(Level.DEBUG,"message");

这是用于测试的log4j.properties:

log4j.rootLogger=INFO, CONSOLE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Encoding=UTF-8
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.SYSLOG = org.apache.log4j.net.SyslogAppender
log4j.appender.SYSLOG.syslogHost = 127.0.0.1
log4j.appender.SYSLOG.layout = org.apache.log4j.PatternLayout
log4j.appender.SYSLOG.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.SYSLOG.Facility = LOCAL0

log4j.logger.org.rulez.magwas.worldmodel=DEBUG
#log4j.logger.org.hibernate.SQL=debug 
#log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=trace
#log4j.logger.org.hibernate.type=trace 

这是已部署的log4j.properties:

log4j.rootLogger=INFO, SYSLOG

log4j.appender.SYSLOG = org.apache.log4j.net.SyslogAppender
log4j.appender.SYSLOG.syslogHost = 127.0.0.1
log4j.appender.SYSLOG.layout = org.apache.log4j.PatternLayout
log4j.appender.SYSLOG.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.SYSLOG.Facility = LOCAL0

log4j.logger.org.rulez.magwas.worldmodel=DEBUG
#log4j.logger.org.hibernate.SQL=debug 
#log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=trace
#log4j.logger.org.hibernate.type=trace 

我在MVN测试中得到这样的行:

2013-05-21 07:12:17,751 [main] DEBUG org.rulez.magwas.worldmodel.BaseObject- setValue0e9é 072r 074t 0e9é 06bk

整个项目: https : //github.com/magwas/worldmodel/commit/c6b08da0a733d9b61257c669e0cc4af9e59444be

编辑:

好的,算了吧,代码(bean中的getter和setter方法)似乎没有被调用,也许休眠直接设置/获取值?

由于您是用INFO级别配置ROOT记录器,因此不会显示任何DEBUG级别的消息。

log4j.rootLogger=INFO, SYSLOG

上面的rootLogger应该配置为DEBUG,以在日志中查看调试和其他更高级别(致命,错误,警告和信息)。

log4j.rootLogger=DEBUG, SYSLOG

我不确定您的Maven测试案例配置是什么,但是您共享的log4j.properties可能在那里没有任何作用。

编辑 :从您的编辑看来,您的登录生产配置错误。 如果您的日志记录设置为INFO,则不应记录DEBUG消息。 我的意思是,这完全违反了拥有日志级别的目的,清楚地表明Log4j的配置不正确,并且浪费了Prod资源的空间和时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM