Unix syslog 庫例程?
此模塊提供一個接口到Unix syslog 日常庫. 參考 Unix 手冊頁關于 syslog 設施的詳細描述.
此模塊包裝了系統的 syslog 例程族。 一個能與 syslog 服務器對話的純 Python 庫則以 logging.handlers 模塊中 SysLogHandler 類的形式提供。
這個模塊定義了以下函數:
-
syslog.syslog(message)? -
syslog.syslog(priority, message) 將字符串 message 發送到系統日志記錄器。 如有必要會添加末尾換行符。 每條消息都帶有一個由 facility 和 level 組成的優先級標價簽。 可選的 priority 參數默認值為
LOG_INFO,它確定消息的優先級。 如果未在 priority 中使用邏輯或 (LOG_INFO | LOG_USER) 對 facility 進行編碼,則會使用在openlog()調用中所給定的值。
-
syslog.openlog([ident[, logoption[, facility]]])? 后續
syslog()調用的日志選項可以通過調用openlog()來設置。 如果日志當前未打開則syslog()將不帶參數地調用openlog()。可選的 ident 關鍵字參數是在每條消息前添加的字符串,默認為
sys.argv[0]去除打頭的路徑部分。 可選的 logoption 關鍵字參數(默認為 0)是一個位字段 -- 請參見下文了解可能的組合值。 可選的 facility 關鍵字參數 (默認為LOG_USER) 為沒有顯式編碼 facility 的消息設置默認的 facility。在 3.2 版更改: 在之前的版本中,不允許關鍵字參數,并且要求必須有 ident。 ident 的默認值依賴于系統庫,它往往為
python而不是 Python 程序文件的實際名稱。
-
syslog.closelog()? 重置日志模塊值并且調用系統庫
closelog().這使得此模塊在初始導入時行為固定。 例如,
openlog()將在首次調用syslog()時被調用(如果openlog()還未被調用過),并且 ident 和其他openlog()形參會被重置為默認值。
-
syslog.setlogmask(maskpri)? 將優先級掩碼設為 maskpri 并返回之前的掩碼值。 調用
syslog()并附帶未在 maskpri 中設置的優先級將會被忽略。 默認設置為記錄所有優先級。 函數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_LOCAL0toLOG_LOCAL7,如果<syslog.h>中有定義則還有LOG_AUTHPRIV。- 日志選項:
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...')
