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

0 投票
1 回答
1698 浏览
提问于 2025-04-18 09:27

我正在寻找一个Python脚本,想用logger把文件数据写入syslog。现在有一个应用程序会输出报告作为日志文件,但我需要把这些日志文件发送到syslog。我有一些代码,但我不知道怎么指定要发送的日志文件,并把它们发到syslog。

这段代码让我有了些思路,但我不知道在哪里指定我需要转移到syslog的文件。有人能帮我指点一下方向吗?或者,能不能提供我需要的文档?

1 个回答

3

Syslog处理器是一个服务,而不是一个文件

你可能对syslog的日志文件设置感到困惑。

引用维基百科的话:

Syslog是一种计算机消息记录的标准。它允许生成消息的软件与存储这些消息的系统,以及报告和分析这些消息的软件分开。

因为syslog是一个服务,所以它会自己决定如何处理日志记录。这就是为什么你只能指定syslog服务的地址(比如默认端口上的localhost),而无法从你独立的应用程序中进行更多控制。

在Syslog那边,有配置选项来控制日志条目应该存放在哪里,但这不在你的日志处理器的控制范围内。

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

将其他日志记录转发到syslog

如果你有一个文件中的其他日志,并想把它发送到syslog,你必须:

  1. 解析日志文件,找到日志记录
  2. 将日志记录发送到syslog

不过,这可能会导致日志记录的时间戳出现问题,因为通常创建时间是在日志记录创建的那一刻自动生成的。但这个问题是可以解决的。

总结

不要指望你的Python日志记录器能决定syslog写入日志记录的文件。这个设置必须在syslog层面进行,而不是在你的应用程序中。

如果你需要从其他来源转发日志,最理想的方式是直接管理转发。如果做不到这一点,你就需要解析日志文件,并将日志记录重新发送到syslog处理器。在这里,你需要解决日志记录中的时间戳细节问题。

撰写回答