syslog — Unix syslog 庫例程


此模組提供對 Unix syslog 庫例程的介面。 有關 syslog 功能的詳細描述,請參閱 Unix 手冊頁。

可用性:Unix,非 WASI,非 iOS。

此模組包裝了系統的 syslog 系列例程。 可以與 syslog 伺服器通訊的純 Python 庫在 logging.handlers 模組中作為 SysLogHandler 提供。

該模組定義以下函式

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

將字串 message 傳送到系統日誌記錄器。如有必要,將新增尾隨換行符。每個訊息都標記有一個由裝置級別組成的優先順序。可選的 priority 引數,預設為 LOG_INFO,確定訊息優先順序。如果 facility 沒有使用邏輯或運算子(LOG_INFO | LOG_USER)在 priority 中編碼,則使用 openlog() 呼叫中給出的值。

如果 openlog() 在呼叫 syslog() 之前尚未被呼叫,則將使用無引數呼叫 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)設定未明確編碼 facility 的訊息的預設 facility。

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

在 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 的掩碼。

使用引數 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...')