# 35.13. `syslog` - Unix syslog库例程

此模块提供到Unix `syslog`库例程的接口。有关`syslog`工具的详细说明，请参阅Unix手册页。

此模块包装系统`syslog`例程系列。在`logging.handlers`模块中可以使用可以与syslog服务器通信的纯Python库，如`SysLogHandler`。

该模块定义了以下功能：

`syslog.``syslog`(message)
`syslog。 t>> `syslog` （ priority，message ）`

  将字符串消息发送到系统记录器。如果需要，添加尾随换行符。每个消息都标记有由设施和级别组成的优先级。可选的priority参数（默认为`LOG_INFO`）确定消息优先级。如果在优先级中使用逻辑或（`LOG_INFO | LOG_USER t1 >），使用`openlog()`调用中给出的值。`

  If `openlog()` has not been called prior to the call to `syslog()`, `openlog()` will be called with no arguments.

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

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

  可选的ident关键字参数是一个字符串，附加在每个消息前面，默认为`sys.argv[0]`。可选的标识关键字参数（默认值为0）是一个位字段 - 请参阅下面的可能的值组合。可选的设施关键字参数（默认为`LOG_USER`）为没有显式编码的消息设置默认工具。

  在版本3.2中已更改：在以前的版本中，不允许使用关键字参数，并且需要使用ident。ident的默认值取决于系统库，通常是`python`，而不是python程序文件的名称。

`syslog.``closelog`()

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

  这导致模块在初始导入时的行为。例如，`openlog()`将在第一个`syslog()`调用（如果`openlog()`尚未被调用）和ident和其他`openlog()`参数复位为默认值。

`syslog.``setlogmask`(maskpri)

  将优先级掩码设置为maskpri，并返回上一个掩码值。Calls to `syslog()` with a priority level not set in maskpri are ignored. 默认值为记录所有优先级。函数`LOG_MASK(pri)`计算单个优先级pri的掩码。函数`LOG_UPTO(pri)`计算所有优先级的掩码，包括pri。

模块定义以下常量：

优先级（从高到低）：
  `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_LOCAL0` to `LOG_LOCAL7`, and, if defined in `<syslog.h>`, `LOG_AUTHPRIV`.
日志选项：
  `LOG_PID`, `LOG_CONS`, `LOG_NDELAY`, and, if defined in `<syslog.h>`, `LOG_ODELAY`, `LOG_NOWAIT`, and `LOG_PERROR`.

## 35.13.1. Examples

### 35.13.1.1. Simple example

一组简单的例子：

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