Unix syslog 庫例程?


此模塊提供一個接口到Unix syslog 日常庫. 參考 Unix 手冊頁關于 syslog 設施的詳細描述.

此模塊包裝了系統(tǒng)的 syslog 例程族。 一個能與 syslog 服務器對話的純 Python 庫則以 logging.handlers 模塊中 SysLogHandler 類的形式提供。

這個模塊定義了以下函數(shù):

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

將字符串 message 發(fā)送到系統(tǒng)日志記錄器。 如有必要會添加末尾換行符。 每條消息都帶有一個由 facilitylevel 組成的優(yōu)先級標價簽。 可選的 priority 參數(shù)默認值為 LOG_INFO,它確定消息的優(yōu)先級。 如果未在 priority 中使用邏輯或 (LOG_INFO | LOG_USER) 對 facility 進行編碼,則會使用在 openlog() 調用中所給定的值。

如果 openlog() 未在對 syslog() 的調用之前被調用,則將不帶參數(shù)地調用 openlog()。

引發(fā) 審計事件 syslog.syslog 使用參數(shù) priority, message.

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

后續(xù) syslog() 調用的日志選項可以通過調用 openlog() 來設置。 如果日志當前未打開則 syslog() 將不帶參數(shù)地調用 openlog()。

可選的 ident 關鍵字參數(shù)是在每條消息前添加的字符串,默認為 sys.argv[0] 去除打頭的路徑部分。 可選的 logoption 關鍵字參數(shù)(默認為 0)是一個位字段 -- 請參見下文了解可能的組合值。 可選的 facility 關鍵字參數(shù) (默認為 LOG_USER) 為沒有顯式編碼 facility 的消息設置默認的 facility。

引發(fā) 審計事件 syslog.openlog 使用參數(shù) ident, logoption, facility.

在 3.2 版更改: 在之前的版本中,不允許關鍵字參數(shù),并且要求必須有 identident 的默認值依賴于系統(tǒng)庫,它往往為 python 而不是 Python 程序文件的實際名稱。

syslog.closelog()?

重置日志模塊值并且調用系統(tǒng)庫 closelog().

這使得此模塊在初始導入時行為固定。 例如,openlog() 將在首次調用 syslog() 時被調用(如果 openlog() 還未被調用過),并且 ident 和其他 openlog() 形參會被重置為默認值。

引發(fā)一個 審計事件 syslog.closelog 不附帶任何參數(shù)。

syslog.setlogmask(maskpri)?

將優(yōu)先級掩碼設為 maskpri 并返回之前的掩碼值。 調用 syslog() 并附帶未在 maskpri 中設置的優(yōu)先級將會被忽略。 默認設置為記錄所有優(yōu)先級。 函數(shù) LOG_MASK(pri) 可計算單個優(yōu)先級 pri 的掩碼。 函數(shù) LOG_UPTO(pri) 可計算包括 pri 在內的所有優(yōu)先級的掩碼。

引發(fā)一個 審計事件 syslog.setlogmask 附帶參數(shù) maskpri

此模塊定義了一下常量:

優(yōu)先級級別 (高到低):

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,如果 <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...')