syslog — Unix syslog 库例程 — Python 文档

来自菜鸟教程
Python/docs/3.10/library/syslog
跳转至:导航、​搜索

syslog — Unix 系统日志库例程


该模块提供了一个到 Unix syslog 库例程的接口。 有关 syslog 工具的详细说明,请参阅 Unix 手册页。

该模块包装了系统 syslog 例程系列。 logging.handlers 模块中提供了一个可以与系统日志服务器对话的纯 Python 库,名称为 SysLogHandler

该模块定义了以下功能:

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

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

如果 openlog() 在调用 syslog() 之前没有被调用,则 openlog() 将被无参数调用。

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

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

可选的 ident 关键字参数是一个字符串,它被添加到每条消息之前,默认为 sys.argv[0] 去掉前导路径组件。 可选的 logoption 关键字参数(默认为 0)是一个位字段 - 请参阅下文以了解可能的组合值。 可选的 facility 关键字参数(默认为 LOG_USER)为没有显式编码设施的消息设置默认设施。

3.2 版本变更: 之前的版本不允许使用关键字参数,需要使用 identident 的默认值取决于系统库,通常是 python 而不是 Python 程序文件的名称。

syslog.closelog()

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

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

syslog.setlogmask(maskpri)
将优先级掩码设置为 maskpri 并返回之前的掩码值。 忽略在 maskpri 中未设置优先级的对 syslog() 的调用。 默认是记录所有优先级。 函数 LOG_MASK(pri) 计算各个优先级 pri 的掩码。 函数 LOG_UPTO(pri) 计算所有优先级的掩码,包括 pri

该模块定义了以下常量:

优先级(从高到低):
LOG_EMERGLOG_ALERTLOG_CRITLOG_ERRLOG_WARNINGLOG_NOTICELOG_INFO、[ X77X]。
设施:
LOG_KERNLOG_USERLOG_MAILLOG_DAEMONLOG_AUTHLOG_LPRLOG_NEWS、[ X77X]、LOG_CRONLOG_SYSLOGLOG_LOCAL0LOG_LOCAL7,以及如果在 <syslog.h>、 中定义X175X]。
日志选项:
LOG_PIDLOG_CONSLOG_NDELAY,以及如果在 <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...')