将logrotate与logback一起使用

时间:2013-09-30 23:34:43

标签: logging logback logrotate

将logback与logrotate结合使用时,推荐的配置是什么?基于调查博客等,隐式推荐配置是使用FileAppender.append=true然后logrotate的copytruncate选项。

这是对的吗?我需要注意龙吗?

2 个答案:

答案 0 :(得分:3)

多年来为多个客户完成此操作后,最受青睐的方法是使用TimeBasedRollingPolicy,每日滚动(可设置为任意频率)并将MaxHistory设置为所需的天数(通常为30天)。

虽然我喜欢并将logrotate用于其他日志文件,但Logback的内置滚动意味着我的客户无需使用logrotate。

为了协调跨应用程序/集中化,Logback可以包含其他Logback配置文件,因此您可以在文件中定义标准的appender代码段(Logback支持属性,因此包含文件可以根据需要定义信息)。

即使有上述内容,也可能需要logrotate具有Logback不会...但我想分享TimeBasedRollingPolicy以防它被忽略。

此方法至少可以对Logback滚动文件进行logrotate工作,避免logrotate在活动Logback日志文件上运行时可能出现的问题。

保持日志隔离(不要将应用程序日志混合到syslog中)对于故障排除(应用程序和系统)非常有帮助 - 既不必处理其他人的噪音。

答案 1 :(得分:2)

我不确定正确的方法是什么,因为今天早些时候我遇到这个问题只是因为我在寻找相同的答案。

我认为这种方法可行,但它有两个相对较小的问题(如果你甚至可以称之为):

  • 有一个竞争条件窗口,在logrotate创建数据副本和截断该数据的时间之间,日志数据可能会丢失
  • Logrotate必须复制整个文件,与关闭/重新打开日志文件的典型SIGHUP方法相比,这似乎有点浪费。

在我自己的搜索中,我现在正在考虑从FileAppender(或Rolling one)切换到SysLogAppender并使用带有rsyslog的logrotate,两者都可以很自然地一起工作。然后,我考虑这个的原因是因为我们的系统中有其他python守护进程,而那些守护进程已经使用了rsyslog。我唯一保留切换到SysLogAppender的原因是我不知道它如何处理异常堆栈跟踪,因为syslog不允许超过1024个字符的消息。

在回答马丁施罗德的评论时,我想我想像你一样做出改变。这样我们所有服务的日志记录配置都以相同的方式配置和处理,并具有相同的行为。