清除日志文件后,Logback停止记录

时间:2017-10-05 18:41:22

标签: java linux logging logback

当我处于开发模式时,我通常会清除日志文件,我需要重新开始,只关注我必须测试的内容。

如果我清除linux中的日志文件(尚未测试Windows),则logback将停止写入该文件 也许这是关于Linux中的开放处理程序和文件描述符的东西。

如何在不重新启动应用程序的情况下恢复情况? 是否可以使用可以自动恢复这种情况的追加器?

1 个答案:

答案 0 :(得分:1)

当您的应用程序正在运行时(并且您的应用程序中的Logback具有对日志文件的打开句柄)...

  • 您将无法删除Windows上的文件
  • 您将能够删除 Linux 上的文件,但就Logback而言,该文件仍然存在,直到Logback关闭该打开的文件句柄。因此,Logback不会知道该文件已被删除,但由于文件已被删除,Logback实际上无法向磁盘写入任何内容,这种情况一直存在,直到重新初始化Logback(并且您的FileAppender重新创建)文件)。通常,这将在应用程序启动时完成。

对于Logback,有open issue请求在这种情况下更改Logback的行为。

如果你的目标是让日志输出专注于最近活动,那么你可以定义一个具有最小大小而没有历史记录的滚动文件appender只保留(例如)最后1MB的数据,这可能帮助只关注最近的事件

或者,你必须:

  • 投票给this issue
  • 使用grep / awk查找日志文件的相关方面(您可以轻松地在时间戳上进行grep),即使它们位于包含最近几小时日志事件的日志文件中
  • 通过编写一个简单的脚本来减轻在这种情况下重启应用程序的负担:(1)停止应用程序; (2)删除日志文件; (3)开始申请