syslog — Unix syslog 库例程¶
本模块提供了 Unix syslog 库例程的接口。有关 syslog 功能的详细说明,请参阅 Unix 手册页。
可用性: Unix, 不包括 WASI, 不包括 iOS。
本模块封装了系统 syslog 系列例程。一个纯 Python 库,可以与 syslog 服务器通信,可以在 logging.handlers 模块中找到,作为 SysLogHandler。
该模块定义了以下函数:
- syslog.syslog(message)¶
- syslog.syslog(priority, message)
将字符串 message 发送到系统日志记录器。如果需要,会添加一个尾随的换行符。每条消息都带有一个由 facility 和 level 组成的优先级。可选的 priority 参数,默认为
LOG_INFO,决定了消息的优先级。如果设施没有使用逻辑或 (LOG_INFO | LOG_USER) 编码到 priority 中,则使用openlog()调用中给定的值。如果在调用
syslog()之前没有调用openlog(),则会以无参数方式调用openlog()。使用参数
priority,message引发 审计事件syslog.syslog。3.12 版本中已更改: 此函数在子解释器中受到限制。(只影响在多个解释器中运行的代码,此限制与大多数用户无关。)必须在主解释器中调用
openlog()之后,才可以在子解释器中使用syslog()。否则它将引发RuntimeError。
- syslog.openlog([ident[, logoption[, facility]]])¶
可以通过调用
openlog()来设置后续syslog()调用的日志选项。syslog()将在日志未打开时调用无参数的openlog()。可选的 ident 关键字参数是一个字符串,它会被添加到每条消息的前面,默认为去除前导路径组件的
sys.argv[0]。可选的 logoption 关键字参数(默认为 0)是一个位字段——请参阅下面的可能组合值。可选的 facility 关键字参数(默认为LOG_USER)设置没有明确编码设施的消息的默认设施。使用参数
ident,logoption,facility引发 审计事件syslog.openlog。3.2 版本中已更改: 在早期版本中,不允许使用关键字参数,并且 ident 是必需的。
3.12 版本中已更改: 此函数在子解释器中受到限制。(只影响在多个解释器中运行的代码,此限制与大多数用户无关。)此函数只能在主解释器中调用。如果在子解释器中调用,它将引发
RuntimeError。
- syslog.closelog()¶
重置 syslog 模块值并调用系统库
closelog()。这使得模块行为与最初导入时相同。例如,在第一次
syslog()调用时(如果openlog()尚未被调用),将调用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_AUTHPRIV、LOG_FTP、LOG_NETINFO、LOG_REMOTEAUTH、LOG_INSTALL和LOG_RAS的可用性。3.13 版本中已更改: 添加了
LOG_FTP、LOG_NETINFO、LOG_REMOTEAUTH、LOG_INSTALL、LOG_RAS和LOG_LAUNCHD。
- syslog.LOG_PID¶
- syslog.LOG_CONS¶
- syslog.LOG_NDELAY¶
- syslog.LOG_ODELAY¶
- syslog.LOG_NOWAIT¶
- syslog.LOG_PERROR¶
日志选项,取决于
<syslog.h>中对LOG_ODELAY、LOG_NOWAIT和LOG_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...')