36.15. syslog — Unix syslog 库例程

该模块提供了与 Unix syslog库例程的接口。有关syslogFunction的详细说明,请参见 Unix 手册页。

此模块包装系统syslog例程系列。 logging.handlers模块中的SysLogHandler提供了可以与 syslog 服务器对话的纯 Python 库。

该模块定义了以下Function:

  • syslog. syslog(* message *)

  • syslog. syslog(优先级消息)

    • 将字符串* message 发送到系统 Logger。如有必要,添加尾随换行符。每个消息都被标记为具有 facility level 的优先级。可选的 priority 参数(默认为LOG_INFO)确定邮件优先级。如果未使用逻辑或(LOG_INFO | LOG_USER)在 priority *中对Function进行编码,则使用openlog()调用中给出的值。

如果在调用syslog()之前尚未调用openlog(),则将不带任何参数地调用openlog()

  • syslog. openlog([* ident * [,* logoption * [,设施]]])

可选的* ident 关键字参数是一个字符串,该字符串位于每个消息之前,并且默认为sys.argv[0],并且前导路径部分已去除。可选的 logoption 关键字参数(默认为 0)是一个位字段–有关合并的可能值,请参见下文。可选的 facility *关键字参数(默认值为LOG_USER)为没有显式编码的Function的邮件设置默认Function。

  • syslog. closelog ( )
    • 重置 syslog 模块值,然后调用系统库closelog()

这导致模块的行为与最初导入时的行为相同。例如,在第一个syslog()调用中将调用openlog()(如果尚未调用openlog()),并且* ident *和其他openlog()参数被重置为默认值。

  • syslog. setlogmask(* maskpri *)
    • 将优先级掩码设置为* maskpri 并返回先前的掩码值。在 maskpri 中未设置优先级的syslog()调用将被忽略。默认为记录所有优先级。函数LOG_MASK(pri)计算单个优先级 pri 的掩码。函数LOG_UPTO(pri)计算所有优先级的掩码,直到 pri *为止。

该模块定义以下常量:

  • 优先级(从高到低):

    • LOG_EMERG , LOG_ALERT , LOG_CRIT , LOG_ERR , LOG_WARNING , LOG_NOTICE , LOG_INFO , LOG_DEBUG .
  • Facilities:

    • LOG_KERNLOG_USERLOG_MAILLOG_DAEMONLOG_AUTHLOG_LPRLOG_NEWSLOG_UUCPLOG_CRONLOG_SYSLOGLOG_LOCAL0LOG_LOCAL7
  • Log options:

    • LOG_PIDLOG_CONSLOG_NDELAYLOG_NOWAITLOG_PERROR(如果在<syslog.h>中定义)。

36.15.1. Examples

36.15.1.1. 简单的例子

一组简单的示例:

import syslog

syslog.syslog('Processing started')
if error:
    syslog.syslog(syslog.LOG_ERR, 'Processing started')

设置一些日志选项的示例,其中包括在记录的消息中包含进程 ID,并将消息写入用于邮件记录的目标工具:

syslog.openlog(logoption=syslog.LOG_PID, facility=syslog.LOG_MAIL)
syslog.syslog('E-mail processing initiated...')