Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging 使用logrotate和logback_Logging_Logback_Logrotate - Fatal编程技术网

Logging 使用logrotate和logback

Logging 使用logrotate和logback,logging,logback,logrotate,Logging,Logback,Logrotate,当将logback与logrotate结合使用时,推荐的配置是什么?根据对博客等的调查,建议隐式配置是使用FileAppender.append=true,然后使用logrotate的copyruncate选项 这是正确的吗?这里有我需要注意的龙吗?我不确定正确的方法是什么,因为今天早些时候我遇到这个问题只是因为我在寻找相同的答案 我认为这种方法是可行的,但是它有两个相对较小的问题(如果你可以这样称呼它们的话): 有一个竞争条件窗口,在该窗口中,日志数据可能在logrotate复制数据和截断数

当将logback与logrotate结合使用时,推荐的配置是什么?根据对博客等的调查,建议隐式配置是使用
FileAppender.append=true
,然后使用logrotate的
copyruncate
选项


这是正确的吗?这里有我需要注意的龙吗?

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

我认为这种方法是可行的,但是它有两个相对较小的问题(如果你可以这样称呼它们的话):

  • 有一个竞争条件窗口,在该窗口中,日志数据可能在logrotate复制数据和截断数据之间丢失
  • Logrotate必须复制整个文件,与SIGHUP关闭/重新打开日志文件的典型方法相比,这似乎有点浪费
在我自己的搜索中,我现在正在考虑从FileAppender(或滚动一个)切换到SysLogAppender,并使用logrotate和rsyslog,这两者都非常自然地协同工作。再说一遍,我之所以考虑这个问题,是因为我们的系统中还有其他python守护进程,而这些守护进程已经使用了rsyslog。我对切换到SysLogAppender的唯一保留是,我不知道它如何处理异常堆栈跟踪,因为syslog不允许消息长度超过1024个字符


作为对马丁·施罗德评论的回答,我想我之所以要做出改变,是因为你的原因。因此,我们对所有服务的日志配置都以相同的方式进行配置和处理,并且具有相同的行为。

多年来,我们为多个客户提供了这样的服务,最受欢迎的方法是使用TimeBasedRollingPolicy,每天滚动(可以设置为任何频率),并将MaxHistory设置为所需的天数(通常是30岁)

虽然我喜欢对其他日志文件使用logrotate,但Logback的内置滚动意味着logrotate对我的客户来说并不是必需的

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

即使有上述情况,也可能有人希望logrotate拥有Logback没有的功能……但是我想分享基于时间的LLINGPOLICY,以防它被忽略

至少,这种方法可以让logrotate在回滚的Logback日志文件上工作,从而避免logrotate在活动的Logback日志文件上操作的潜在问题


保持日志隔离(不要将应用程序日志混入系统日志)对于故障排除(应用程序和系统)非常有帮助-两者都不需要处理其他人的噪音。

为什么不使用logback的
RollingFileAppender
?我想避免我们其他基础设施的冗余,logrotate提供了其他本机功能,我们需要在事后复制。比如minds:)假设你知道,但为了公开记录,使用rsyslog,您可以设置$MaxMessageSize(),而
SyslogAppender
可以处理多达64k长的消息()。正如日志
SyslogAppender
上的说明,它只支持UDP传输,不支持命名管道或TCP。接受这个答案是因为它与问题一致,但@Jeff的答案也会很好,取决于你的需要。杰夫,我很欣赏这种观点。但是,如果有一条合理的路径,我的目标是运营上的融合;特别是当我们还处理包含重要数据的日志传送时;不仅仅是为了审计/调试。想法?我知道这很老了。即便如此,我还是想评论一下,我发现使用TimeBasedRollingPolicy有一个缺点。日志归运行应用程序的同一用户所有。我不喜欢它,因为它为黑客在有证据证明他或她是如何设法闯入时删除它们开辟了一条途径。你不觉得吗?你知道另一种选择吗?