Unix syslog 庫例程?


此模塊提供一個(gè)接口到Unix syslog 日常庫. 參考 Unix 手冊頁(yè)關(guān)于 syslog 設施的詳細描述.

此模塊包裝了系統的 syslog 例程族。 一個(gè)能與 syslog 服務(wù)器對話(huà)的純 Python 庫則以 logging.handlers 模塊中 SysLogHandler 類(lèi)的形式提供。

這個(gè)模塊定義了以下函數:

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

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

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

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

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

后續 syslog() 調用的日志選項可以通過(guò)調用 openlog() 來(lái)設置。 如果日志當前未打開(kāi)則 syslog() 將不帶參數地調用 openlog()。

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

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

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

syslog.closelog()?

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

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

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

syslog.setlogmask(maskpri)?

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

引發(fā)一個(gè) 審計事件 syslog.setlogmask 附帶參數 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。

例子?

簡(jiǎn)單示例?

一個(gè)簡(jiǎn)單的示例集:

import syslog

syslog.syslog('Processing started')
if error:
    syslog.syslog(syslog.LOG_ERR, 'Processing started')

一個(gè)設置多種日志選項的示例,其中有在日志消息中包含進(jìn)程 ID,以及將消息寫(xiě)入用于郵件日志記錄的目標設施等:

syslog.openlog(logoption=syslog.LOG_PID, facility=syslog.LOG_MAIL)
syslog.syslog('E-mail processing initiated...')