我正在研究如何从我的Python应用程序中登录到syslog,我发现有两种方法可以实现:
哪个是最好的选择,每个的优点/缺点等等,因为我真的不知道应该使用哪个。
答案 0 :(得分:11)
syslog.syslog()
只能用于向本地syslogd发送消息。 SysLogHandler
可用作全面,可配置的日志记录子系统的一部分,并可以登录到远程计算机。
答案 1 :(得分:5)
日志记录模块是一个更全面的解决方案,可以处理所有日志消息,并且非常灵活。例如,您可以为记录器设置多个手柄,每个手柄都可以设置为在不同级别记录。您可以使用SysLogHandler将错误发送到syslog,使用FileHandler调试日志,使用SMTPHandler将真正关键的消息通过电子邮件发送给操作系统。您还可以在模块中定义记录器的层次结构,每个记录器都有自己的级别,因此您可以启用/禁用来自特定模块的消息,例如:
import logging
logger = logging.getLogger('package.stable_module')
logger.setLevel(logging.WARNING)
在另一个模块中:
import logging
logger = logging.getLogger('package.buggy_module')
logger.setLevel(logging.DEBUG)
这两个模块中的日志消息将根据级别发送到“包”记录器,最终发送给您定义的处理程序。您还可以直接将处理程序添加到模块记录器,依此类推。如果你已经跟着这么远而且仍然感兴趣,那么我建议跳转到记录tutorial以获取更多细节。
答案 2 :(得分:0)
到目前为止,logging.handlers.SysLogHander
存在一个尚未提及的缺点。我无法设置LOG_ODELAY
或LOG_NOWAIT
或LOG_PID
等选项。另一方面,LOG_CONS
和LOG_PERROR
可以通过添加更多处理程序来实现,默认情况下已经设置了LOG_NDELAY
,因为在实例化处理程序时会打开连接。