我们的catalina.out文件每隔一段时间变得非常大(是的,我在我的应用程序中实现了slf4j和logback以防止将来出现这种情况).但是现在,当我去循环日志时,我将catalina.out复制到catalina.{date}并执行cat /dev/null > catalina.out
.问题是,在我这样做之后,tomcat将不再捕获日志,直到第二天早上tomcat重新启动,这并不理想.为什么会这样?有没有办法避免它?
Edw*_*uck 13
传统的方式是
cat /dev/null > catalina.out
Run Code Online (Sandbox Code Playgroud)
它将清除日志文件,并且不会中断当前保存打开文件句柄的进程.
更好的方法是通过旋出日志文件来丢失您的日志记录信息.为此,请创建或编辑文件/etc/logrotate.d/tomcat
并读取其内容
/var/log/tomcat/catalina.out { copytruncate daily rotate 7 compress missingok size 5M }
Run Code Online (Sandbox Code Playgroud)
然后使用命令重启logrotate(以root身份)
/usr/sbin/logrotate /etc/logrotate.conf
Run Code Online (Sandbox Code Playgroud)
并且您应该每天将日志文件轮换出来,或者如果大小超过5M,则保留最后七个日志以进行调试.
您可以截断该文件.这也具有逻辑意义,因为它基本上就是你要做的事情.
truncate -s 0 M catalina.out
仅供参考:执行a cat /dev/null > file
不会改变文件的inode.
logs]$ls -i test.log
19794063 test.log
logs]$
logs]$cat /dev/null > test.log
logs]$ls -i test.log
19794063 test.log
Run Code Online (Sandbox Code Playgroud)
另外,test.log
在这些命令中,我有一个单独的命令将实时数据拖入其中.运行这些命令后,尾部test.log
仍然可以正常工作.这不能回答你为何停止工作的问题,但它有助于排除inode的变化.
归档时间: |
|
查看次数: |
28814 次 |
最近记录: |