我在Tomcat中有一个使用log4j进行日志logging的Web应用程序。
如果在Web应用程序运行时删除日志文件,则不会重新创build文件?
如何configurationlog4j重新创build删除文件,而不必重新启动Tomcat?
如果你的tomcat是在一个linux服务器上,并且用一个特定的用户来启动它,而这个用户不具有日志文件夹的执行权限,你的log4j将不会重新创建你的日志,因为它可能只有读/写权限。
如果是这种情况,尝试一下:
在包含文件夹上的chmod 755
编辑:
第二种可能是某些操作系统只有在文件不再被使用时才能完成“删除”操作。 如果是这样的话,你的tomcat仍然可以在那里“看见”日志。
EDIT2:
在这种情况下,做一个cron作业,每隔几分钟检查文件是否在那里。 如果不是只是重新创建它。 我会在几分钟内提供一个解决方案。
所以应该在你的crontab中的bash应该是这样的:
if [ ! -f /tomcat_dir/log4j.log ] then `touch /tomcat_dir/log4j.log`; fi
在log4j.properties中,配置一个RollingFileAppender
#------------------------------------------------------------------------------ # # Rolling File Appender # #------------------------------------------------------------------------------ log4j.appender.rfile = org.apache.log4j.RollingFileAppender log4j.appender.rfile.File = logs/server.log log4j.appender.rfile.Append = false log4j.appender.rfile.MaxFileSize=10240KB log4j.appender.rfile.MaxBackupIndex=10 log4j.appender.rfile.layout = org.apache.log4j.PatternLayout log4j.appender.rfile.layout.ConversionPattern = %d %-5p [%C] (%t) %m (%F:%L)%n
配置每日cron作业(/etc/crond.daily/中的sh脚本),用于清理$ DAYS之前的日志
find $LOG_ROOT/log/server.log* -mtime +$DAYS -exec rm {} \;