[英]log4j with spring create empty file
我想在spring 4.0.1和JBOSS 7.1中使用log4j 1.2.9,但是每次我在控制台上获取日志信息,但文件已创建且为空时...
log4j.properties
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\log\\loggingFile.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
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{ABSOLUTE} %5p %c{1}:%L - %m%n
# Root logger option
log4j.rootLogger=INFO, file, stdout
web.xml中
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
简单测试控制器
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;
@ManagedBean(name="MyController")
public class MyController {
static final Logger logger = Logger.getLogger(MyController.class);
public String test() {
BasicConfigurator.configure();
logger.debug(LoginController.class);
logger.info("Info.. ");
logger.error("Error..");
logger.fatal("Fatal");
return null;
}}
解决方案是在/ WEB-INF中添加jboss-deployment-structure.xml以排除org.apache.log4j
<jboss-deployment-structure>
<deployment>
dependencies -->
<exclusions>
<module name="org.apache.log4j" />
</exclusions>
</deployment>
</jboss-deployment-structure>
我的配置看起来不错,我相信您在webapp
有一个log4j.jar
的额外副本。
而且,为什么不使用JBoss AS 7.x
存在的日志subsystem
? 通过该子系统,您可以为要实现的所有功能进行集中配置。 维护也将更加容易。
为此,只需删除log4j.properties
并通过依赖项导入log4j
/ slf4j
,并确保您没有在webapp
打包自己的log4j
/ slf4j
jar。
查看JBoss的日志记录配置 。
Shishir
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.