【问题标题】:Complete log management (python)完整的日志管理(python)
【发布时间】:2011-05-31 07:05:51
【问题描述】:

有人问了类似的问题,但我没有遇到一个容易做到的方法

我们有一些填满空间的各种应用程序日志,我们还面临其他不想要的问题。我如何为此维护编写监视脚本(压缩特定大小的文件、移动它们、监视它们等)?我正在寻找一个简单的解决方案(如使用什么?),如果可能的话在 python 中或者只是一个 shell 脚本。

谢谢。

【问题讨论】:

  • 什么是不需要的问题?你想在日志文件达到特定大小时删除它的内容吗..
  • 就像,是的,有一些关于各种日志文件的逻辑,它们的大小,压缩一些,删除一些等等。

标签: python linux monitoring logging


【解决方案1】:

执行此操作的“标准”方式(至少在大多数 Gnu/Linux 发行版上)是使用 logrotate。我在我的 Debian 机器上看到了 /etc/logrotate.conf,其中详细说明了要旋转哪些文件以及以什么频率旋转。它由每日 cron 条目触发。这是我推荐的。

如果您希望您的应用程序本身执行此操作(这真的很痛苦,因为这不是它的工作),您可以考虑编写一个自定义 log handler。 RotatingFileHandler(或 TimedRotatingFileHandler)可能会起作用,但您可以编写自定义的。

大多数系统默认设置为自动轮换由 syslog 发出的日志文件。您可能需要考虑使用 SysLogHandler 并将日志记录到 syslog(从您的所有应用程序,无论语言如何),以便系统基础架构自动为您处理事情。

【讨论】:

  • 是的,我不想从我的应用程序本身执行此操作。
  • 我建议使用 logrotate 而不是自制解决方案。如果您的(python)应用程序运行时间很长,您可以使用 WatchedFileHandler 来确保它在文件被旋转时不会死掉,正如 sorin 在他的回答中提到的那样。
  • 为什么是-1?当人们无缘无故地随机投票时,这很烦人。我想知道答案是否有问题,或者是否可以通过任何方式改进。
【解决方案2】:

使用logrotate 为您完成工作。

请记住,在少数情况下它可能无法正常工作,例如,如果日志记录应用程序始终保持日志文件处于打开状态,并且在文件被删除并重新创建时无法恢复它。

多年来,我遇到过很少的类似应用程序,但即使对于它们,您也可以配置 logrotate 以在轮换日志时重新启动它们。

【讨论】:

  • 这个答案不准确。 Python 日志记录模块处理日志记录。不记录轮换(尽管它可以使用特殊的处理程序来做一些事情)。 Syslog 只是这样做的一种方式,但它并不是真正的跨平台。
  • 如果您只是想大量复制我的答案的精髓,给出某种归属是有礼貌的。
  • 是的,偷答案是蹩脚的。
  • 首先这不是副本(甚至没有灵感),其次它包含您的答案中缺少的重要细节。你应该花更多时间回答其他问题而不是发火。
  • 我没有燃烧。您最初建议 python 日志记录模块可以解决他的所有问题。在我发布了提到 logrotate 和 syslog 的答案以及我对您的评论之后,您完全改变了您的答案以提及相同的事情。这看起来像是在偷我的答案。至于您提到的额外细节,我在我自己的回答下的第二条评论中将它们归功于您。
猜你喜欢
  • 2014-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多