syslog — Unix syslog 庫例程


本模組提供了 Unix syslog 庫例程的介面。有關 syslog 功能的詳細說明,請參閱 Unix 手冊頁。

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

本模組封裝了系統 syslog 系列例程。一個純 Python 庫,可以與 syslog 伺服器通訊,可以在 logging.handlers 模組中找到,作為 SysLogHandler

該模組定義了以下函式:

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

將字串 message 傳送到系統日誌記錄器。如果需要,會新增一個尾隨的換行符。每條訊息都帶有一個由 facilitylevel 組成的優先順序。可選的 priority 引數,預設為 LOG_INFO,決定了訊息的優先順序。如果設施沒有使用邏輯或 (LOG_INFO | LOG_USER) 編碼到 priority 中,則使用 openlog() 呼叫中給定的值。

如果在呼叫 syslog() 之前沒有呼叫 openlog(),則會以無引數方式呼叫 openlog()

使用引數 priority, message 引發 審計事件 syslog.syslog

3.2 版本中已更改: 在早期版本中,如果未在呼叫 syslog() 之前呼叫 openlog(),則不會自動呼叫 openlog(),而是交由 syslog 實現來呼叫 openlog()

3.12 版本中已更改: 此函式在子直譯器中受到限制。(隻影響在多個直譯器中執行的程式碼,此限制與大多數使用者無關。)必須在主直譯器中呼叫 openlog() 之後,才可以在子直譯器中使用 syslog()。否則它將引發 RuntimeError

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

可以透過呼叫 openlog() 來設定後續 syslog() 呼叫的日誌選項。syslog() 將在日誌未開啟時呼叫無引數的 openlog()

可選的 ident 關鍵字引數是一個字串,它會被新增到每條訊息的前面,預設為去除前導路徑元件的 sys.argv[0]。可選的 logoption 關鍵字引數(預設為 0)是一個位欄位——請參閱下面的可能組合值。可選的 facility 關鍵字引數(預設為 LOG_USER)設定沒有明確編碼設施的訊息的預設設施。

使用引數 ident, logoption, facility 引發 審計事件 syslog.openlog

3.2 版本中已更改: 在早期版本中,不允許使用關鍵字引數,並且 ident 是必需的。

3.12 版本中已更改: 此函式在子直譯器中受到限制。(隻影響在多個直譯器中執行的程式碼,此限制與大多數使用者無關。)此函式只能在主直譯器中呼叫。如果在子直譯器中呼叫,它將引發 RuntimeError

syslog.closelog()

重置 syslog 模組值並呼叫系統庫 closelog()

這使得模組行為與最初匯入時相同。例如,在第一次 syslog() 呼叫時(如果 openlog() 尚未被呼叫),將呼叫 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_AUTHPRIVLOG_FTPLOG_NETINFOLOG_REMOTEAUTHLOG_INSTALLLOG_RAS 的可用性。

3.13 版本中已更改: 添加了 LOG_FTPLOG_NETINFOLOG_REMOTEAUTHLOG_INSTALLLOG_RASLOG_LAUNCHD

syslog.LOG_PID
syslog.LOG_CONS
syslog.LOG_NDELAY
syslog.LOG_ODELAY
syslog.LOG_NOWAIT
syslog.LOG_PERROR

日誌選項,取決於 <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...')