logging 日誌模塊

logging 日誌模塊
用於便捷記錄日誌且線程安全的模塊
logging將日誌打印到屏幕,日誌級別大小關係爲:
CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,固然也能夠本身定義日誌級別。
DEBUG:詳細的信息,一般只出如今診斷問題上。
INFO:確認一切按預期運行
WARNING:一個警告,可能會有一些意想不到的事情發生了,或代表一些問題在不久的未來(例如。磁盤空間低」)。這個軟件還能按預期工做
ERROR:個更嚴重的問題,軟件沒能執行一些功能
CRITICAL:一個嚴重的錯誤,這代表程序自己可能沒法繼續運行
默認logging默認的日誌級別是info,通常基本上全部的程序都是這個級別,排查問題時,將日誌級別提高到debug級別
 
日誌寫入文件
logging.basicConfig 函數對日誌的輸出格式及方式作相關配置

 

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import logging
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',datefmt=' %Y/%m/%d %H:%M:%S', filename='myapp.log', filemode='w')
logger = logging.getLogger(__name__)
logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')

 

結果,生成.log 文件
2017/11/10 23:53:41 logging_module.py[line:10] DEBUG This is debug message
2017/11/10 23:53:41 logging_module.py[line:11] INFO This is info message
2017/11/10 23:53:41 logging_module.py[line:12] WARNING This is warning message
 
日誌格式

level: 設置日誌級別,默認爲logging.WARNINGpython

filename: 指定日誌文件名。安全

filemode: file函數意義相同,指定日誌文件的打開模式,'w''a'app

format: 指定輸出的格式和內容,format能夠輸出不少有用信息
%(name)s           打印 Logger的名字
%(levelno)s            數字形式的日誌級別
%(levelname)s      文本形式的日誌級別
%(pathname)s           調用日誌輸出函數的模塊的完整路徑名,可能沒有
%(filename)s           調用日誌輸出函數的模塊的文件名
%(module)s                調用日誌輸出函數的模塊名
%(funcName)s      調用日誌輸出函數的函數名
%(lineno)d                調用日誌輸出函數的語句所在的代碼行
%(created)f           當前時間,用UNIX標準的表示時間的浮 點數表示
%(relativeCreated)d      輸出日誌信息時的,自Logger建立以 來的毫秒數
%(asctime)s           字符串形式的當前時間。默認格式是 「2017-07-08 16:49:45,896」。逗號後面的是毫秒
%(thread)d           線程ID
%(threadName)s      線程名
%(process)d           進程ID
%(message)s          打印 輸出的消息
 
datefmt: 指定時間格式,同time.strftime()
stream: 指定將日誌的輸出流,能夠指定輸出到sys.stderr,sys.stdout或者文件,默認輸出到sys.stderr,當stream和filename同時指定時,stream被忽略
logging.getLogger([name]):建立一個日誌對象:
 
返回一個logger實例,若是沒有指定name,返回root logger。只要name相同,返回的logger實例都是同一個並且只有一個,即name和logger實例是一一對應的。這意味着,無需把logger實例在各個模塊中傳遞。只要知道name,就能獲得同一個logger實例。
logging.getLogger(__name__) 在上述實例中__name__就指的是__main__。
 
 

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">函數

相關文章
相關標籤/搜索