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.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_AUTHPRIV
、LOG_FTP
、LOG_NETINFO
、LOG_REMOTEAUTH
、LOG_INSTALL
和LOG_RAS
的可用性。在 3.13 版本中變更: 添加了
LOG_FTP
、LOG_NETINFO
、LOG_REMOTEAUTH
、LOG_INSTALL
、LOG_RAS
和LOG_LAUNCHD
。
- syslog.LOG_PID¶
- syslog.LOG_CONS¶
- syslog.LOG_NDELAY¶
- syslog.LOG_ODELAY¶
- syslog.LOG_NOWAIT¶
- syslog.LOG_PERROR¶
日誌選項,取決於
<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...')