如何使用log4j在我的项目目录中写入文件?

时间:2011-05-12 05:57:01

标签: java tomcat servlets log4j

我有一个log4j属性文件,它在我的tomcat> bin文件夹中创建一个文件,但是它可以将日志文件写入我项目的根目录吗?的 web应用>试验>? _ __

这是我的log4j属性文件内容。

#define the console appender
log4j.appender.consoleAppender = org.apache.log4j.ConsoleAppender

# now define the layout for the appender
log4j.appender.consoleAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.consoleAppender.layout.ConversionPattern=%t %-5p %c{3} - %m%n

log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender
log4j.appender.rollingFile.File=/test/a.log
log4j.appender.rollingFile.MaxFileSize=10MB
log4j.appender.rollingFile.MaxBackupIndex=2
log4j.appender.rollingFile.layout = org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.ConversionPattern=%p %t %c - %m%n

# now map our console appender as a root logger, means all log messages will go to this appender
#for console printing
#log4j.rootLogger = DEBUG, consoleAppender   

#for file printing
log4j.rootLogger = DEBUG, rollingFile   

2 个答案:

答案 0 :(得分:8)

尝试替换它:

log4j.appender.rollingFile.File=/test/a.log

用这个:

log4j.appender.rollingFile.File=../webapps/test/a.log

注意(由Stephen C提供) - “../”表示此解决方案取决于您使用的Tomcat启动机制是否使$ CATALINA_HOME成为托管Tomcat的JVM之前的当前目录。有些人做,有些则不做。

答案 1 :(得分:7)

log4j配置理解"${catalina.home}",所以......

 log4j.appender.rollingFile.File=${catalina.home}/webapps/test/a.log

但是,我不认为将日志放入webapps树是一个好主意,因为如果重新部署了webapp,它们可能会被吹走。

将它们放在${catalina.home}/logs中。

或者更好的是,将它们放在特定于发行版的传统位置以放置应用程序日志文件;例如“/ var / spool / ...”或“/ var / log / ...”。

将日志文件放在标准位置意味着其他人(例如,在您度假时作为备份系统管理员的人)可以调查文件系统是否填满旧日志文件。