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