syslog — Unix syslog 库例程


此模块提供对 Unix syslog 库例程的接口。 有关 syslog 功能的详细描述,请参阅 Unix 手册页。

可用性:Unix,非 WASI,非 iOS。

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

该模块定义以下函数

syslog.syslog(message)
syslog.syslog(priority, message)

将字符串 message 发送到系统日志记录器。如有必要,将添加尾随换行符。每个消息都标记有一个由设备级别组成的优先级。可选的 priority 参数,默认为 LOG_INFO,确定消息优先级。如果 facility 没有使用逻辑或运算符(LOG_INFO | LOG_USER)在 priority 中编码,则使用 openlog() 调用中给出的值。

如果 openlog() 在调用 syslog() 之前尚未被调用,则将使用无参数调用 openlog()

使用参数 priority, message 引发 审计事件 syslog.syslog

在 3.2 版本中更改: 在以前的版本中,如果未在调用 syslog() 之前调用 openlog(),则不会自动调用 openlog(),而是推迟到 syslog 实现调用 openlog()

在 3.12 版本中更改: 此函数在子解释器中受到限制。(只有在多个解释器中运行的代码才会受到影响,并且此限制与大多数用户无关。)openlog() 必须在主解释器中调用,之后才能在子解释器中使用 syslog()。否则,它将引发 RuntimeError

syslog.openlog([ident[, logoption[, facility]]])

可以通过调用 openlog() 设置后续 syslog() 调用的日志记录选项。如果日志当前未打开,syslog() 将使用无参数调用 openlog()

可选的 ident 关键字参数是一个字符串,它被添加到每个消息的前面,并且默认为 sys.argv[0],并剥离前导路径组件。可选的 logoption 关键字参数(默认为 0)是一个位字段 - 请参阅下面的组合可能的值。可选的 facility 关键字参数(默认为 LOG_USER)设置未明确编码 facility 的消息的默认 facility。

使用参数 ident, logoption, facility 引发 审计事件 syslog.openlog

在 3.2 版本中更改: 在以前的版本中,不允许使用关键字参数,并且 ident 是必需的。

在 3.12 版本中更改: 此函数在子解释器中受到限制。(只有在多个解释器中运行的代码才会受到影响,并且此限制与大多数用户无关。)这只能在主解释器中调用。如果在子解释器中调用,它将引发 RuntimeError

syslog.closelog()

重置 syslog 模块值并调用系统库 closelog()

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

引发没有参数的 审计事件 syslog.closelog

在 3.12 版本中更改: 此函数在子解释器中受到限制。(只有在多个解释器中运行的代码才会受到影响,并且此限制与大多数用户无关。)这只能在主解释器中调用。如果在子解释器中调用,它将引发 RuntimeError

syslog.setlogmask(maskpri)

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

使用参数 maskpri 引发 审计事件 syslog.setlogmask

该模块定义了以下常量

syslog.LOG_EMERG
syslog.LOG_ALERT
syslog.LOG_CRIT
syslog.LOG_ERR
syslog.LOG_WARNING
syslog.LOG_NOTICE
syslog.LOG_INFO
syslog.LOG_DEBUG

优先级(从高到低)。

syslog.LOG_AUTH
syslog.LOG_AUTHPRIV
syslog.LOG_CRON
syslog.LOG_DAEMON
syslog.LOG_FTP
syslog.LOG_INSTALL
syslog.LOG_KERN
syslog.LOG_LAUNCHD
syslog.LOG_LPR
syslog.LOG_MAIL
syslog.LOG_NETINFO
syslog.LOG_NEWS
syslog.LOG_RAS
syslog.LOG_REMOTEAUTH
syslog.LOG_SYSLOG
syslog.LOG_USER
syslog.LOG_UUCP
syslog.LOG_LOCAL0
syslog.LOG_LOCAL1
syslog.LOG_LOCAL2
syslog.LOG_LOCAL3
syslog.LOG_LOCAL4
syslog.LOG_LOCAL5
syslog.LOG_LOCAL6
syslog.LOG_LOCAL7

设备,取决于 <syslog.h> 中对于 LOG_AUTHPRIVLOG_FTPLOG_NETINFOLOG_REMOTEAUTHLOG_INSTALLLOG_RAS 的可用性。

在 3.13 版本中变更: 添加了 LOG_FTPLOG_NETINFOLOG_REMOTEAUTHLOG_INSTALLLOG_RASLOG_LAUNCHD

syslog.LOG_PID
syslog.LOG_CONS
syslog.LOG_NDELAY
syslog.LOG_ODELAY
syslog.LOG_NOWAIT
syslog.LOG_PERROR

日志选项,取决于 <syslog.h> 中对于 LOG_ODELAYLOG_NOWAITLOG_PERROR 的可用性。

示例

简单示例

一组简单的示例

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...')