syslog.syslog vs SysLogHandler

Jua*_*cho 21 python logging syslog

我正在研究如何从我的Python应用程序中登录到syslog,我发现有两种方法可以:

  1. 使用syslog.syslog()例程
  2. 使用记录器模块SysLogHandler

哪个是最好的选择,每个的优点/缺点等等,因为我真的不知道应该使用哪一个.

Ign*_*ams 11

syslog.syslog()只能用于向本地syslogd发送消息.SysLogHandler可以用作全面,可配置的日志记录子系统的一部分,并可以登录到远程计算机.

  • 嗯,这不完全正确,您可以配置您的系统日志以将它收到的内容发送到远程系统日志服务器.这样做的好处是,不仅python应用程序的消息被发送到远程服务器,而且还发送到系统的每条消息. (4认同)
  • 是的,但我的意思是,使用syslog.syslog(),您还可以通过本地syslog服务器将消息发送到远程syslog服务器,因此它不是SysLogHandler优于syslog.syslog()的优势. (2认同)

小智 5

日志记录模块是一个更全面的解决方案,可以处理所有日志消息,并且非常灵活.例如,您可以为记录器设置多个手柄,每个手柄都可以设置为在不同级别记录.您可以使用SysLogHandler将错误发送到syslog,使用FileHandler调试日志,使用SMTPHandler将真正关键的消息通过电子邮件发送给操作系统.您还可以在模块中定义记录器的层次结构,每个记录器都有自己的级别,因此您可以启用/禁用来自特定模块的消息,例如:

import logging
logger = logging.getLogger('package.stable_module')
logger.setLevel(logging.WARNING)
Run Code Online (Sandbox Code Playgroud)

在另一个模块中:

import logging
logger = logging.getLogger('package.buggy_module')
logger.setLevel(logging.DEBUG)
Run Code Online (Sandbox Code Playgroud)

这两个模块中的日志消息将根据级别发送到"包"记录器,最终发送给您定义的处理程序.您还可以直接将处理程序添加到模块记录器,依此类推.如果你已经跟着这个并且仍然感兴趣,那么我建议你跳到日志教程了解更多细节.