Python中的logging模塊——日志對于運維人員的重要性

CSDN的查看鏈接:https://blog.csdn.net/zsh773992554/article/details/86022757

????最近復習了一下關于日志模塊震檩,之前我們做的只要是項目歹袁,日志一定是不可缺失的饥漫,因為對于非程序開發(fā)人員,要想判斷程序是否正常運行的必要條件就是查看日志。所以這個對于用戶和運維測試的人員是重中之重,當然開發(fā)人員在開發(fā)過程中也是看日志過來的,不過一般的IDE都有自己的輸出平臺创南,所以報錯信息都可以直接看的。當然直接用text開發(fā)的大佬請忽視我這種菜鳥的觀念

????我之前有過一段時間運維的經驗省核,所以知道一個程序的log文件如果沒有弄好是多么的"惡心"稿辙,面對這一個.txt或者.log等后綴卻有著4G大小的log文件,坦然說如果開發(fā)人員在气忠,我保證不打死他 ["打殘應該可以的"] 邻储。因為運維的電腦配置一般都不是很好,所以每次開個log旧噪,能開到我死機吨娜。然后面對這里面一大堆的時間字符,以及亂七八糟的奇怪說明以及鬼都不知道是報錯還是警告的玩意看起淘钟。倘然你可以說經驗的老司機一看就知道宦赠,但是老司機的熬練過程很煩躁的,如果log規(guī)范些米母,并且報的東西實際意義大一些勾扭,不是什么玩意都報是不是對大家都是一件好事呢?

????好了铁瞒,話題扯的太遠尺借,收一下【猓回到本次主題就是在python中的logging模塊。

概述:日志是記錄著某些軟件在運行時所有發(fā)生的事件

作用:通過log分析虱歪,能夠方便用戶了解系統(tǒng)蜂绎、應用的運行情況。

總結為以下幾點

? 1.程序調試

? ? ? ? ? ? 2.連接軟件程序運行情況笋鄙,是否正常

? ? ? ? ? ? 3.軟件程序運行的故障分析和問題定位

? ? ? ? ? ? 4.如果信息詳細豐富师枣,可以做來用戶行為分析

不同環(huán)境下的日志

在軟件開發(fā)或部署環(huán)境時,日志內容應該是盡可能的詳細萧落,這樣能夠幫助開發(fā)運維人員查看應用程序的運行狀態(tài)践美,以及在各個不同環(huán)境下的情況洗贰。然后我們將所有的運行日志記錄分析,以確保后續(xù)的環(huán)境配置進行更新陨倡。但這是非常消耗機器性能的

正式發(fā)布或者生產環(huán)境部署程序時敛滋,通常只是需要記錄應用的異常和錯誤信息,類似程序崩潰兴革,數(shù)據(jù)訪問失敗等绎晃。這樣可以減小服務器的I/O訪問壓力,也能夠方便故障排查

那么這個時候就是日志等級的體現(xiàn)了杂曲。

FATAL/CRITICAL = 重大的庶艾,危險的? ? ? ? ? ? ? ? ?

【如果你不能及時發(fā)現(xiàn)和處理,你就可以走人的信息擎勘,一般1-2小時內發(fā)現(xiàn)咱揍,4小時內處理】

ERROR = 錯誤

【會導致程序出現(xiàn)閃退或者是無法正常使用的信息,一般2-4小時內發(fā)現(xiàn)棚饵,8小時內處理】

WARNING = 警告

【一般是內存不夠煤裙,或者鏈接異常等問題,一般6-8小時內發(fā)現(xiàn)蟹地,24小時內處理】

INFO = 信息

【運行里的信息顯示积暖,每次運行的記錄】

DEBUG = 調試

【主要用于開發(fā)人員使用】

NOTSET = 沒有設置

【如果你想掩耳盜鈴,且留個大坑怪与。但一般沒人會這樣做夺刑,損人不利己】

日志信息與格式

日志信息除了本身程序的報錯日志,同時也有程序開發(fā)者的報錯提示分别,日志內容和日志級別是開發(fā)人員明確指定的遍愿,對于其他的字段信息,只需要考慮是否顯示在日志中就可以了耘斩。無論你怎么提示沼填,最重要的是必須能夠讓看的人直到問題是什么,在哪出現(xiàn)的括授,以及發(fā)生的時間坞笙。沒有這些信息,就不算一個日志該有的內容格式

實現(xiàn)模塊

Python 自身提供的一個模塊:logging

logging 模塊

該模塊定義的函數(shù)和類為應用程序和庫的開發(fā)實現(xiàn)了一個靈活的事件日志系統(tǒng)

它是Python的標準庫模塊荚虚,由標準庫提供日志記錄API的好處是薛夜,所有的Python模塊都可使用這個日志記錄功能

logging的日志級別

它有自己的默認定義的日志等級,也允許開發(fā)人員自定義其他日志等級版述,但一般不推薦梯澜。因為可能會導致日志級別混亂

DEBUG:最詳細的日志信息。適用場景是 問題診斷

INFO:詳細程度僅此于DEBUG渴析,通常只記錄關鍵節(jié)點信息晚伙,用于確認運行流程順序是否按預期進行

WARNING:當某些不希望的事情發(fā)生時的記錄吮龄,此時程序還能運行,比如:磁盤空間不足咆疗,或者連接訪問資源失敗

ERROR:由于嚴重問題導致功能不能正常運行時的記錄

FATAL/CRITICAL:系統(tǒng)即將完全崩潰

一般開發(fā)時使用DEBUG或INFO漓帚,上線或部署生產時使用WARNING或ERROR或CRITICAL級別,減輕I/O壓力和提高錯誤日志的抓取效率民傻,一般級別在配置文件中指定

logging的使用方式

loggers:提供應用程序代碼直接使用的接口

handlers:用于將日志記錄發(fā)送到指定的目的位置

filters:提供更加細致的日志過濾功能胰默,用于決定哪些日志記錄被輸出

formatters:控制日志信息的最終輸出格式


# 設置日志的記錄等級

????logging.basicConfig(level=logging.DEBUG)

# 調試debug級

# 創(chuàng)建日志記錄器,指明日志保存的路徑漓踢、每個日志文件的最大大小牵署、保存的日志文件個數(shù)上限

????file_log_handler = RotatingFileHandler("logs/log", maxBytes=1024*1024*100, backupCount=10)

# 創(chuàng)建日志記錄的格式 日志等級 輸入日志信息的文件名 行數(shù) 日志信息

????formatter = logging.Formatter('%(levelname)s %(filename)s:%(lineno)d %(message)s')

# 為剛創(chuàng)建的日志記錄器設置日志記錄格式

????file_log_handler.setFormatter(formatter)

# 為全局的日志工具對象(flask app使用的)添加日志記錄器

????logging.getLogger().addHandler(file_log_handler)

使用logging的模塊級別的函數(shù)記錄日志

????importlogging

????logging.debug("This is a debug log.")logging.info("This is a info log.")

????logging.warning("This is a warning log.")logging.error("This is a error log.")

????logging.critical("This is a critical log.")

????# 或者是這樣寫

????logging.log(logging.DEBUG,"This is a debug log.")

????logging.log(logging.INFO,"This is a info log.")

????logging.log(logging.WARNING,"This is a warning log.")

????logging.log(logging.ERROR,"This is a error log.")

????logging.log(logging.CRITICAL,"This is a critical log.")

其實說到底,日志就像是一個人的身體檢查報告喧半,能夠幫助一個從來都不認識的你的醫(yī)生奴迅,在最簡短的時間內知道你的問題在哪,然后他能夠根據(jù)你的情況去提供最有效的解決辦法挺据。當前運維的小哥哥們都是這樣做的取具,至于醫(yī)生是不是。扁耐。暇检。你猜吧

好了,本次的logging介紹完婉称,其實它的作用不是想的那么大块仆,但就是不可缺失。所以請每個開發(fā)的工作者們王暗,寫好自己的日志記錄吧悔据,方便別人的同時,也是在提高自己俗壹。當然如果對于本人文章哪里有錯誤或者不足科汗,請留言,我會及時更改的绷雏。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末头滔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子涎显,更是在濱河造成了極大的恐慌拙毫,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棺禾,死亡現(xiàn)場離奇詭異,居然都是意外死亡峭跳,警方通過查閱死者的電腦和手機膘婶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門缺前,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人悬襟,你說我怎么就攤上這事衅码。” “怎么了脊岳?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵逝段,是天一觀的道長。 經常有香客問我割捅,道長奶躯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任亿驾,我火速辦了婚禮嘹黔,結果婚禮上,老公的妹妹穿的比我還像新娘莫瞬。我一直安慰自己儡蔓,他們只是感情好,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布疼邀。 她就那樣靜靜地躺著喂江,像睡著了一般。 火紅的嫁衣襯著肌膚如雪旁振。 梳的紋絲不亂的頭發(fā)上获询,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音规求,去河邊找鬼筐付。 笑死,一個胖子當著我的面吹牛阻肿,可吹牛的內容都是我干的瓦戚。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼丛塌,長吁一口氣:“原來是場噩夢啊……” “哼较解!你這毒婦竟也來了?” 一聲冷哼從身側響起赴邻,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤印衔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后姥敛,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奸焙,經...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了与帆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片了赌。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖玄糟,靈堂內的尸體忽然破棺而出勿她,到底是詐尸還是另有隱情,我是刑警寧澤阵翎,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布逢并,位于F島的核電站,受9級特大地震影響郭卫,放射性物質發(fā)生泄漏砍聊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一箱沦、第九天 我趴在偏房一處隱蔽的房頂上張望辩恼。 院中可真熱鬧,春花似錦谓形、人聲如沸灶伊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽聘萨。三九已至,卻和暖如春童太,著一層夾襖步出監(jiān)牢的瞬間米辐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工书释, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留翘贮,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓爆惧,卻偏偏與公主長得像狸页,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子扯再,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內容

  • From:Python之日志處理(logging模塊) - 云游道士 - 博客園 https://www.cnbl...
    vigny的先生閱讀 2,672評論 3 5
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 2,693評論 0 3
  • 在現(xiàn)實生活中芍耘,記錄日志非常重要。銀行轉賬時會有轉賬記錄熄阻;飛機飛行過程中斋竞,會有黑盒子(飛行數(shù)據(jù)記錄器)記錄飛行過程中...
    chliar閱讀 756評論 1 0
  • logging模塊介紹: logging是python內置的標準庫模塊,模塊提供不同的日志級別秃殉,并可以采用不同的方...
    4ffde5305e8f閱讀 2,821評論 0 2
  • 籬修籬朽 風不凍的夜晚 多么美妙啊 美妙 旋律轉動 旋轉律動 轉動命運之輪 揭開神秘園林 有你理想中的法寶 律動神...
    尚酷閱讀 206評論 5 10