syslog — Unix syslog 库例程 — Python 文档
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() 调用中给出的值。
- syslog.openlog([ident[, logoption[, facility]]])
可以通过调用 openlog() 来设置后续 syslog() 调用的日志记录选项。 syslog() 将调用 openlog() 如果日志当前未打开,则不带参数。
可选的 ident 关键字参数是一个字符串,它被添加到每条消息之前,默认为
sys.argv[0]
去掉前导路径组件。 可选的 logoption 关键字参数(默认为 0)是一个位字段 - 请参阅下文以了解要组合的可能值。 可选的 facility 关键字参数(默认为LOG_USER
)为没有显式编码设施的消息设置默认设施。3.2 版本变更: 之前的版本不允许使用关键字参数,需要使用 ident。 ident 的默认值取决于系统库,通常是
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_EMERG
、LOG_ALERT
、LOG_CRIT
、LOG_ERR
、LOG_WARNING
、LOG_NOTICE
、LOG_INFO
、[ X77X]。- 设施:
LOG_KERN
、LOG_USER
、LOG_MAIL
、LOG_DAEMON
、LOG_AUTH
、LOG_LPR
、LOG_NEWS
、[ X77X]、LOG_CRON
、LOG_SYSLOG
、LOG_LOCAL0
至LOG_LOCAL7
,以及如果在<syslog.h>
、 中定义X175X]。- 日志选项:
LOG_PID
、LOG_CONS
、LOG_NDELAY
,以及如果在<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...')