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

abi*_*964 8 java tomcat servlets log4j

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

这是我的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   
Run Code Online (Sandbox Code Playgroud)

Har*_*Joy 8

尝试替换这个:

log4j.appender.rollingFile.File=/test/a.log
Run Code Online (Sandbox Code Playgroud)

有了这个:

log4j.appender.rollingFile.File=../webapps/test/a.log
Run Code Online (Sandbox Code Playgroud)

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


Ste*_*n C 8

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

 log4j.appender.rollingFile.File=${catalina.home}/webapps/test/a.log
Run Code Online (Sandbox Code Playgroud)

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

把它们${catalina.home}/logs放进去.

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

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