如何使用Python脚本将文件数据写入syslog?
我正在寻找一个Python脚本,想用logger把文件数据写入syslog。现在有一个应用程序会输出报告作为日志文件,但我需要把这些日志文件发送到syslog。我有一些代码,但我不知道怎么指定要发送的日志文件,并把它们发到syslog。
这段代码让我有了些思路,但我不知道在哪里指定我需要转移到syslog的文件。有人能帮我指点一下方向吗?或者,能不能提供我需要的文档?
1 个回答
3
Syslog处理器是一个服务,而不是一个文件
你可能对syslog的日志文件设置感到困惑。
引用维基百科的话:
Syslog是一种计算机消息记录的标准。它允许生成消息的软件与存储这些消息的系统,以及报告和分析这些消息的软件分开。
因为syslog是一个服务,所以它会自己决定如何处理日志记录。这就是为什么你只能指定syslog服务的地址(比如默认端口上的localhost),而无法从你独立的应用程序中进行更多控制。
在Syslog那边,有配置选项来控制日志条目应该存放在哪里,但这不在你的日志处理器的控制范围内。
如果你省略了address
,它默认会连接到localhost和默认的syslog端口。在这种情况下,你很可能会在/var/log/syslog
文件中找到你的日志记录。
将其他日志记录转发到syslog
如果你有一个文件中的其他日志,并想把它发送到syslog,你必须:
- 解析日志文件,找到日志记录
- 将日志记录发送到syslog
不过,这可能会导致日志记录的时间戳出现问题,因为通常创建时间是在日志记录创建的那一刻自动生成的。但这个问题是可以解决的。
总结
不要指望你的Python日志记录器能决定syslog写入日志记录的文件。这个设置必须在syslog层面进行,而不是在你的应用程序中。
如果你需要从其他来源转发日志,最理想的方式是直接管理转发。如果做不到这一点,你就需要解析日志文件,并将日志记录重新发送到syslog处理器。在这里,你需要解决日志记录中的时间戳细节问题。