【问题标题】:Log4j not recreate log file after deleting itLog4j 删除后不重新创建日志文件
【发布时间】:2017-01-17 14:52:35
【问题描述】:

我在 Tomcat 上部署的应用程序使用 log4j 编写日志文件。如果我删除该文件,则应用程序不会重新创建它。我也尝试手动重新创建它,但它始终是空的。有什么办法可以删除日志文件(不是从应用程序中删除),在相同路径下创建一个新的同名文件,并且可以由应用程序写入?

【问题讨论】:

  • 为什么需要这个?
  • @Jens 因为它是另一个程序,如果日志文件在 2 天内没有写入,它会删除它。
  • 这有意义吗?
  • @Jens 是的,对我来说。其他程序行为超出了我的范围。
  • 在 linux 环境中,您可以执行cat /dev/null >logfile 之类的操作,而不是删除日志文件,并且无需删除日志框架中的文件句柄即可将其清除

标签: java tomcat logging log4j


【解决方案1】:

有没有办法删除日志文件(不是从应用程序中删除),在相同路径中创建一个新的同名文件,并且可以由应用程序写入?

不。您需要让应用程序本身重新启动日志记录。

问题是 log4j appender 仍然有一个已删除文件的句柄,并且会继续写入它......不知道它已被删除。

更好的方法是让应用程序自己负责“轮换”日志文件。查看实现 log4j Appender 接口的classes 以获得一些想法。

【讨论】:

  • 我虽然是这样,但我仍然希望有任何解决方法......无论如何,谢谢。
  • 嗯,可能有。例如,您可以编写一个自定义附加程序,在每次尝试写入之前检查日志文件是否存在。但它丑陋且效率低下......并且需要更改应用程序才能使其正常工作。
猜你喜欢
  • 2018-04-07
  • 1970-01-01
  • 1970-01-01
  • 2012-04-13
  • 2012-08-19
  • 1970-01-01
  • 1970-01-01
  • 2019-09-08
相关资源
最近更新 更多