使用Python中的logging模塊打印日志信息

轉(zhuǎn)載自:知乎:使用Python中l(wèi)ogging模塊错维,拋棄print吧

logging模塊作用及示例

在實際應用中纸俭,日志文件十分重要,通過日志文件任内,我們知道程序運行的細節(jié);同時融柬,當程序出問題時死嗦,我們也可以通過日志快速定位問題所在。我們也需要輸出一些中間信息粒氧,如運行時間越除、變量值等,以便于定位問題和調(diào)試外盯。

在以往我們習慣于用print()函數(shù)輸出信息摘盆,如:

print('Start reading database')
records = model.read_recrods()
print('records', records)
print('Updating record ...')
model.update_records(records)
print('done')

使用print()的缺點很明顯,當正式運行程序時饱苟,需要將這些print()語句注釋或刪除孩擂,效率很低。

為解決這個問題箱熬,可以使用logging模塊:

import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

logger.info('Start reading database')
# read database here
records = {'john': 55, 'tom': 66}
logger.debug('Records: %s', records)
logger.info('Updating records ...')
# update records here
logger.info('Finish updating records')

運行結(jié)果如下:

INFO:__main__:Start reading database
INFO:__main__:Updating records ...
INFO:__main__:Finish updating records

logging模塊和print()的區(qū)別在于:logging模塊可以通過改變level來控制一些語句是否輸出类垦。在上邊代碼中level被設(shè)置為INFO級別狈邑,下邊改為DEBUG級別:

logging.basicConfig(level=logging.DEBUG)

得到的輸出為:

INFO:__main__:Start reading database
DEBUG:__main__:Records: {'john': 55, 'tom': 66}
INFO:__main__:Updating records ...
INFO:__main__:Finish updating records

logging模塊介紹

基本介紹

  1. logging 模塊是python自帶的一個包,因此在使用的時候蚤认,不必安裝米苹,只需要import即可。
  2. logging模塊有5個level烙懦,分別是:debug,主要是查看一下程序運行的信息赤炒,一般是調(diào)試程序要看的信息氯析;info,是我們看程序是否如預料執(zhí)行的信息莺褒;warn掩缓,意料之外的,但是不影響程序運行遵岩;error和critical就是一些比較嚴重的問題你辣,會影響程序運行。
    默認level是warn尘执,這個時候debug級別和info級別就不會被輸出到日志里了舍哄。如果想要看到這些信息,就需要進行一些設(shè)置誊锭。

基礎(chǔ)設(shè)置

主要調(diào)用logging.basicConfig(***kwargs*)這個函數(shù)對logging進行設(shè)置表悬。函數(shù)常用的參數(shù)如下:

  1. level:主要調(diào)整logging的級別
  2. filename:輸出日志的路徑
  3. filemode:直接寫入還是追加寫入
  4. format:輸出的格式

通過調(diào)整format,可以輸出我們想要的格式丧靡,比如:

import logging

logging.basicConfig(format='%(asctime)s - %(message)s', datefmt='%d-%b-%y %H:%M:%S')
logging.warning('Admin logged out')

輸出結(jié)果為:

12-Jul-18 20:53:19 - Admin logged out

這就是在format參數(shù)中設(shè)置了時間的蟆沫,所以得到了時間。我們可以輸出多種想要的信息温治,主要參考這里饭庞。

總結(jié)

除非是自己寫的小腳本中可以使用print()函數(shù),其他情況下最好還是用logging模塊來打印信息熬荆,輸出日志舟山。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市卤恳,隨后出現(xiàn)的幾起案子捏顺,更是在濱河造成了極大的恐慌,老刑警劉巖纬黎,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幅骄,死亡現(xiàn)場離奇詭異,居然都是意外死亡本今,警方通過查閱死者的電腦和手機拆座,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進店門主巍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人挪凑,你說我怎么就攤上這事孕索。” “怎么了躏碳?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵搞旭,是天一觀的道長。 經(jīng)常有香客問我菇绵,道長肄渗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任咬最,我火速辦了婚禮翎嫡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘永乌。我一直安慰自己惑申,他們只是感情好,可當我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布翅雏。 她就那樣靜靜地躺著圈驼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪望几。 梳的紋絲不亂的頭發(fā)上碗脊,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天,我揣著相機與錄音橄妆,去河邊找鬼衙伶。 笑死,一個胖子當著我的面吹牛害碾,可吹牛的內(nèi)容都是我干的矢劲。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼慌随,長吁一口氣:“原來是場噩夢啊……” “哼芬沉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起阁猜,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤丸逸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后剃袍,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體黄刚,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年民效,在試婚紗的時候發(fā)現(xiàn)自己被綠了憔维。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涛救。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖业扒,靈堂內(nèi)的尸體忽然破棺而出检吆,到底是詐尸還是另有隱情,我是刑警寧澤程储,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布蹭沛,位于F島的核電站,受9級特大地震影響章鲤,放射性物質(zhì)發(fā)生泄漏摊灭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一咏窿、第九天 我趴在偏房一處隱蔽的房頂上張望斟或。 院中可真熱鬧素征,春花似錦集嵌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至端蛆,卻和暖如春凤粗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背今豆。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工嫌拣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人呆躲。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓异逐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親插掂。 傳聞我的和親對象是個殘疾皇子灰瞻,可洞房花燭夜當晚...
    茶點故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 本文參考自:https://www.cnblogs.com/Nicholas0707/p/9021672.html...
    handsomePeng閱讀 1,413評論 1 4
  • logging模塊簡介 logging模塊是Python內(nèi)置的標準模塊,主要用于輸出運行日志辅甥,可以設(shè)置輸出日志的等...
    qiuzhongwei閱讀 433評論 0 1
  • (一)酝润、日志相關(guān)概念 1、日志的作用 通過log的分析璃弄,可以方便用戶了解系統(tǒng)或軟件要销、應用的運行情況;如果你的應用l...
    Rainy丶Wang閱讀 604評論 0 0
  • 寫在前面的話 代碼中的# > 表示的是輸出結(jié)果 輸入 使用input()函數(shù) 用法 注意input函數(shù)輸出的均是字...
    FlyingLittlePG閱讀 2,764評論 0 8
  • 剛才從渡輪匆忙下來夏块,我就以百米沖刺的速度沖到了最后一班車面前蕉陋,突然一騎電瓶車的大叔把手伸到我面前捐凭,叫到:"姑娘,這...
    費馬的姐姐閱讀 150評論 0 0