使用syslog而不是其他日志记录工具有什么好处?

时间:2011-10-13 07:07:59

标签: python logging syslog

我们正在使用基于BaseHTTPServer的基本python日志服务器来聚合ubunutu服务器上的python日志。这个解决方案满足了我们的需求......直到现在。转储到此日志服务器的程序数量已经增加,现在记录器正在削弱系统。

现在我们回到绘图板,我们正在考虑使用syslog。

将syslog用于其他日志设备是否有利。

感谢您的帮助

3 个答案:

答案 0 :(得分:5)

使用syslog可能简单快捷,但无法完全控制日志的聚合方式。

现在您的主要问题是使用BaseHTTPServer,它从未打算在生产服务器上使用,或者用于任何需要高性能的东西。

我看到两个选项:

  1. 使用更好的http服务器和wsgi支持,以及迷你网页框架(我们使用gevent + bottle,但http://nichol.as/benchmark-of-python-web-servers是一个写得很好的解决方案比较)
  2. 使用消息队列。这将意味着您的代码会发生更多变化,但它是您问题的专用解决方案(并且效率更高)。 (我们使用rabbitmq,但请检查谷歌或http://www.darkcoding.net/software/choosing-a-message-queue-for-python-on-ubuntu-on-a-vps进行比较)
  3. 编辑: 支持消息队列的专用解决方案是logbook。它也可以用作标准库日志记录模块的直接替代。

答案 1 :(得分:3)

使用syslog的优势(所有现代* nix系统,包括Linux,FreeBSD,OS-X等)都很多:

  • 性能更好:syslog是编译C的,最重要的是它作为一个单独的进程运行,因此所有日志记录操作都对应用程序,进程和创建它们的线程无阻塞
  • 您可以同时记录多个进程/线程,而无需担心锁定。所有日志记录都是为您安全地序列化的,因此您不会丢失数据
  • 您可以免费获得所有已记录行的标准可排序时间戳
  • 您可以免费获得日志轮换
  • 您可以免费获得严重性级别支持(请参阅man syslog
  • 您可以使用C绑定从任何语言调用日志记录,这几乎是任何语言
  • 您可以从shell脚本或命令行(通过logger
  • 进行简单的日志记录
  • 您无需重新发明(如何记录)轮

我能想到的唯一缺点是syslog不可移植(对于非* nix系统),但如果你使用任何现代* nix,任何替代方案都会更复杂,可能不太可靠。< / p>

由于syslog正在使用UDP而丢失数据包的担忧可能是有效的,但在LAN上的实践中,我从未发现它是一个问题。

答案 2 :(得分:0)

不确定为什么需要HTTP,但这肯定会增加开销。更不用说python实现可能不适合任务。 我可以推荐syslog,但要注意使用UDP进行传输会导致消息丢失,因此强烈建议使用TCP。 syslog-ng和rsyslog都可以处理TCP syslog。 nxlog也可以,甚至不与syslog协议绑定。