syslog — Unix syslog 库例程


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

可用性: Unix,不包括 Emscripten,不包括 WASI。

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

该模块定义了以下函数

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

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

如果在调用 syslog() 之前未调用 openlog(),则 openlog() 将在没有参数的情况下被调用。

引发一个 审计事件 syslog.syslog,参数为 prioritymessage

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

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

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

可以通过调用 openlog() 来设置后续 syslog() 调用的日志记录选项。如果日志当前未打开,syslog() 将在没有参数的情况下调用 openlog()

可选的 ident 关键字参数是一个字符串,它将被附加到每个消息的前面,默认为 sys.argv[0],并去除前导路径组件。可选的 logoption 关键字参数(默认为 0)是一个位域 - 请参阅下面的可能值组合。可选的 facility 关键字参数(默认为 LOG_USER)为没有显式编码 facility 的消息设置默认 facility

引发一个 审计事件 syslog.openlog,参数为 identlogoptionfacility

在版本 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 在内的所有优先级的掩码。

引发一个 审计事件 syslog.setlogmask,参数为 maskpri

该模块定义了以下常量

优先级级别(从高到低)

LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_NOTICE, LOG_INFO, LOG_DEBUG

设施

LOG_KERN, LOG_USER, LOG_MAIL, LOG_DAEMON, LOG_AUTH, LOG_LPR, LOG_NEWS, LOG_UUCP, LOG_CRON, LOG_SYSLOG, LOG_LOCAL0LOG_LOCAL7,以及如果在 <syslog.h> 中定义,则为 LOG_AUTHPRIV

日志选项

LOG_PID, LOG_CONS, LOG_NDELAY,以及如果在 <syslog.h> 中定义,则为 LOG_ODELAY, LOG_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...')