【发布时间】:2011-10-13 07:07:58
【问题描述】:
我们正在使用基于 BaseHTTPServer 的基本 python 日志服务器来在 ubunutu 服务器上聚合我们的 python 日志。这个解决方案已经满足了我们的需求......直到现在。转储到此日志服务器的程序数量已经增加,现在记录器正在破坏系统。
现在我们回到了绘图板上,我们正在考虑使用 syslog。
使用 syslog 是否优于其他日志记录工具。
感谢您的帮助
【问题讨论】:
我们正在使用基于 BaseHTTPServer 的基本 python 日志服务器来在 ubunutu 服务器上聚合我们的 python 日志。这个解决方案已经满足了我们的需求......直到现在。转储到此日志服务器的程序数量已经增加,现在记录器正在破坏系统。
现在我们回到了绘图板上,我们正在考虑使用 syslog。
使用 syslog 是否优于其他日志记录工具。
感谢您的帮助
【问题讨论】:
使用 syslog 可能既简单又快速,但它无法让您完全控制日志的聚合方式。
您现在的主要问题是使用 BaseHTTPServer,它从未打算用于生产服务器或任何需要高性能的东西。
我看到两个选项:
编辑: 支持消息队列的专用解决方案是logbook。也可以直接替代标准库的日志模块。
【讨论】:
在可用的情况下使用 syslog(所有现代 *nix 系统,包括 Linux、FreeBSD、OS-X 等)的优势很多:
man syslog)logger)我能想到的唯一缺点是syslog 是不可移植的(对于非 *nix 系统),但如果您使用的是任何现代 *nix,任何替代方案都会更复杂,并且可能不太可靠。
由于syslog 使用 UDP 而丢失数据包的担忧可能是有效的,但在 LAN 上的实践中,我从未发现它是一个问题。
【讨论】:
不确定为什么需要 HTTP,但这肯定会增加开销。更不用说 python 实现可能无法胜任这项任务。 我可以推荐 syslog ,但要注意使用 UDP 进行传输会导致消息丢失,因此强烈推荐使用 TCP。 syslog-ng 和 rsyslog 都可以处理 TCP syslog。 nxlog 也可以,甚至没有绑定到 syslog 协议。
【讨论】: