如何使用Python脚本记录器将文件数据写入syslog?

时间:2014-06-11 17:44:41

标签: python logging

我试图找到一个使用logger将文件数据写入syslog的Python脚本。有一个应用程序将报告输出为日志文件,但我需要将这些日志文件发送到syslog。我有这个代码,但我无法确定如何定位日志文件并将其发送到Python中的syslog。

这段代码让我走在正确的轨道上,但我不知道在哪里指定我需要传输到syslog的文件。有人可以帮助引导我朝着正确的方向前进吗?或者,也许提供我需要的文档?

1 个答案:

答案 0 :(得分:2)

Syslog处理程序是服务,而不是文件

您似乎对尝试为syslog指定日志文件感到困惑。

引用维基百科:

  

Syslog是计算机消息记录的标准。它允许从存储它们的系统和报告和分析它们的软件中分离生成消息的软件。

由于syslog是一项服务,它决定如何处理它自己的日志记录。这就是为什么,你只能说syslog服务的地址(比如默认端口上的localhost),但是没有机会从你的(分离的)应用程序中控制更多。

在SysLog端,有配置,控制哪个日志条目最终结束,但这不受日志处理程序的控制。

如果省略address,默认情况下会与localhost和默认的syslog端口通信。在这种情况下,您很可能会在/var/log/syslog文件中找到您的日志记录。

将日志记录从另一个日志转发到syslog

如果您在某个文件中有另一个日志并希望将其发送到syslog,则必须:

  1. 解析日志文件并查找日志记录
  2. 将日志记录发送到syslog
  3. 但是,这可能会产生LogRecords时间戳的问题,因为通常创建的时间是在创建日志记录时自动导出的。但它可能会得到解决。

    结论

    不要指望Python中的记录器决定syslog写入日志记录的文件。这必须在syslog级别配置,而不是在您的应用程序中配置。

    如果你必须转发来自其他来源的日志,最理想的是管理它直接在那里。如果您不能这样做,则必须解析日志文件并将日志记录重新发送到syslog处理程序。在这里,您必须解决有关日志记录中的时间戳的详细信息。