Python syslog 淺談

聲明:本文僅限于簡書發(fā)布扔役,其他第三方網(wǎng)站均為盜版番枚,原文地址: Python syslog 淺談

最近在寫一些命令行守護程序,類似于 Linux 下的一些常運行的程序深啤,除了用到一些常見的IO 以及進程間通信的內容之外溯街,還嘗試了一下 Unix 系列的 syslog洋丐,在嘗試過程中,發(fā)現(xiàn) Python 已經(jīng)在 logging 模塊中很方便得集成了 syslog 的功能堤尾,很是方便郭宝;但同時掷漱,Python 的內置庫中也提供了 syslog 的支持卜范,所以,我就對這兩種方式都進行一個介紹和總結缰冤。

syslog

開始之前想說說什么是 syslog喳魏,在 Linux 中刺彩,有很多后臺程序都是以后臺進程的形式存在運行,例如 crontab/sshd/nginx 等嗡害,有些是系統(tǒng)的畦攘,有些是我們自己添加的知押,但是鹃骂,他們都有一些相同的特點:

  1. 我們不能直接從標準輸入給他們輸入畏线,也不能直接從標準輸出獲得他們的輸出
  2. 他們通常在固定的位置有日志可以查看良价,這個位置通常在 /var/log
  3. ... ...

對于其中的第 2 個特點明垢,大部分 Linux 后臺進程都通過 syslog 來實現(xiàn)。因為服務器中很多進程的調試和維護都需要一個穩(wěn)定專業(yè)的日志系統(tǒng)抵蚊,因此,Linux 提供了一個守護進程專門用來處理系統(tǒng)日志粘姜,而這個守護進程就是 syslogd孤紧,不過,現(xiàn)在的系統(tǒng)大都使用 rsyslod(syslog 升級版) 代替臭猜。例如以下是我在一臺 Ubuntu16 的機器上的 syslogd 進程:

有一點值得一提的是蔑歌,無論是內核還是用戶態(tài)次屠,都可以使用 syslog雳刺,只不過他們的路徑不一樣

  • 用戶態(tài):我們調用 syslog 生成日子掖桦,然后這個函數(shù)將日志輸出到一個 UNIX域套接字類型的文件 /dev/log 中,然后 rsyslogd 監(jiān)聽這個文件來獲取日志
  • 內核態(tài)[2]:內核日志通過調用 printk 等函數(shù)打印到內核的環(huán)狀緩存中涌穆,然后這個緩存的內容和文件 /proc/kmsg 是直接映射的,所以 rsyslogd 就可以直接讀取這個文件獲得日志了

syslog 日志的位置

rsyslogd 在接收到日志之后朱监,需要將日志輸出到特定的日志文件中赫编,默認情況下

  • 調試信息會保存到 /var/log/debug 文件中
  • 普通信息會保存到 /var/log/messages 文件中
  • 內核消息會保存到 /var/log/kern.log 文件中

但是這些都是可以改變的奋隶,在我的系統(tǒng)中唯欣,配置文件的位置是 /etc/rsyslog.conf,因為我沒準備修改這些配置蟀拷,所以就沒有研究配置信息问芬,有需要可以參考資料[3]寿桨。

內置 syslog 庫

在 Python 中亭螟,直接就有內置的函數(shù)庫可以使用 syslog挡鞍,一段很簡單的代碼如下:

就可以在 /var/log/syslog 中看到這個內容了:

我們還可以加上日志級別

然而,我們會發(fā)現(xiàn)预烙,這些日志有些簡單墨微,例如我們不知道是哪個進程打出來的,這個時候扁掸,還有一個函數(shù)值得我們一試欢嘿,那就是 openlog

然后再看看我們的日志輸出:

可以看到,這些設置都不是那么好用也糊,畢竟是比較底層的接口炼蹦,所以我們來嘗試一下高層一點的狸剃。

與 logging 模塊結合

我們查閱一下 Python 文檔中的 logging 模塊的文檔掐隐,可以發(fā)現(xiàn)又一個 handler 叫做:SysLogHandler,看一下參數(shù),并不比 syslog 的原始函數(shù)簡單虑省,但是匿刮,我們可以忽略所有這些參數(shù),而簡單得控制日志輸出:

class logging.handlers.SysLogHandler(address=(‘localhost’, SYSLOG_UDP_PORT), facility=LOG_USER, socktype=socket.SOCK_DGRAM)
  • address: 前面說了 rsyslog 是一個套接字探颈,這里可以制定套接字的地址熟丸,注意:這個可以是不在同一臺機器
  • facility:這個參數(shù)的作用是告訴 rsyslog 日志的類型,從而可以讓他根據(jù)不同的類型執(zhí)行不同的操作
  • socktype:這個不用多解釋了

所以使用的話就和其他的 Handler 一致伪节,簡單得記一下:

這里的 address 用的是 /dev/log光羞,因為我查看了一下我機器上是沒有開放 514 端口的,查了一下資料[5]發(fā)現(xiàn):/dev/log 是一個 Unix 套接字怀大,而我機器上并不開放所有機器可用的日志服務纱兑,所以使用 /dev/log 就好了。

Reference

  1. What is the difference between syslog, rsyslog and syslog-ng?
  2. Kernel logging: APIs and implementation
  3. Rsyslogd Configuration
  4. python syslog handler codes
  5. Understand logging in Linux
  6. Linux高性能服務器編程
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末化借,一起剝皮案震驚了整個濱河市潜慎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蓖康,老刑警劉巖铐炫,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蒜焊,居然都是意外死亡倒信,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門山涡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來堤结,“玉大人唆迁,你說我怎么就攤上這事鸭丛。” “怎么了唐责?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵鳞溉,是天一觀的道長。 經(jīng)常有香客問我鼠哥,道長熟菲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任朴恳,我火速辦了婚禮抄罕,結果婚禮上,老公的妹妹穿的比我還像新娘于颖。我一直安慰自己呆贿,他們只是感情好,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著做入,像睡著了一般冒晰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上竟块,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天壶运,我揣著相機與錄音,去河邊找鬼浪秘。 笑死蒋情,一個胖子當著我的面吹牛,可吹牛的內容都是我干的秫逝。 我是一名探鬼主播恕出,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼违帆!你這毒婦竟也來了浙巫?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎倔丈,沒想到半個月后末融,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡丧裁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了含衔。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片煎娇。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖贪染,靈堂內的尸體忽然破棺而出缓呛,到底是詐尸還是另有隱情,我是刑警寧澤杭隙,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布哟绊,位于F島的核電站,受9級特大地震影響痰憎,放射性物質發(fā)生泄漏票髓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一铣耘、第九天 我趴在偏房一處隱蔽的房頂上張望洽沟。 院中可真熱鬧,春花似錦蜗细、人聲如沸裆操。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽跷车。三九已至棘利,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間朽缴,已是汗流浹背善玫。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留密强,地道東北人茅郎。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像或渤,于是被迫代替她去往敵國和親系冗。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內容