logging子產品是Python内置的标準子產品,主要用于輸出運作日志,可以設定輸出日志的等級、日志儲存路徑、日志檔案復原等。
相比print,具備如下優點:
可以通過設定不同的日志等級,在release版本中隻輸出重要資訊,而不必顯示大量的調試資訊;
print将所有資訊都輸出到标準輸出中,嚴重影響開發者從标準輸出中檢視其它資料;logging則可以由開發者決定将資訊輸出到什麼地方,以及怎麼輸出;
在python中,logging由logger,handler,filter,formater四個部分組成:
logger是提供我們記錄日志的方法;handler是讓我們選擇日志的輸出地方,如:控制台,檔案,郵件發送等,一個logger添加多個handler;filter是給使用者提供更加細粒度的控制日志的輸出内容;formater使用者格式化輸出日志的資訊。
python中配置logging有三種方式
第一種:基礎配置,logging.basicConfig(filename="config.log",filemode="w",format="%(asctime)s-%(name)s-%(levelname)s-%(message)s",level=logging.INFO)。
第二種:使用配置檔案的方式配置logging,使用fileConfig(filename,defaults=None,disable_existing_loggers=Ture )函數來讀取配置檔案。
第三種:使用一個字典方式來寫配置資訊,然後使用dictConfig(dict,defaults=None, disable_existing_loggers=Ture )函數來瓦按成logging的配置.
一 、level
日志一共分成5個等級,從低到高分别是:DEBUG ,INFO ,WARNING ,ERROR, CRITICAL。
DEBUG:詳細的資訊,通常隻出現在診斷問題上
INFO:确認一切按預期運作
WARNING:一個迹象表明,一些意想不到的事情發生了,或表明一些問題在不久的将來(例如。磁盤空間低”)。這個軟體還能按預期工作。
ERROR:更嚴重的問題,軟體沒能執行一些功能
CRITICAL:一個嚴重的錯誤,這表明程式本身可能無法繼續運作
這5個等級,也分别對應5種打日志的方法: debug 、info 、warning 、error 、critical。預設的是WARNING,當在WARNING或之上時才被跟蹤。
二、日志輸出:可以輸出在控制台和檔案,我選擇的是輸出在檔案
StreamHandler:logging.StreamHandler;日志輸出到流,可以是sys.stderr,sys.stdout或者檔案
FileHandler:logging.FileHandler;日志輸出到檔案
BaseRotatingHandler:logging.handlers.BaseRotatingHandler;基本的日志復原方式
RotatingHandler:logging.handlers.RotatingHandler;日志復原方式,支援日志檔案最大數量和日志檔案復原
日志復原的意思為:比如日志檔案是chat.log,當chat.log達到指定的大小之後,RotatingFileHandler自動把檔案改名為chat.log.1。不過,如果chat.log.1已經存在,會先把chat.log.1重命名為chat.log.2。最後重新建立 chat.log,繼續輸出日志資訊。【這樣保證了chat.log裡面是最新的日志】
TimeRotatingHandler:logging.handlers.TimeRotatingHandler;日志復原方式,在一定時間區域内復原日志檔案
SocketHandler:logging.handlers.SocketHandler;遠端輸出日志到TCP/IP sockets
DatagramHandler:logging.handlers.DatagramHandler;遠端輸出日志到UDP sockets
SMTPHandler:logging.handlers.SMTPHandler;遠端輸出日志到郵件位址
SysLogHandler:logging.handlers.SysLogHandler;日志輸出到syslog
NTEventLogHandler:logging.handlers.NTEventLogHandler;遠端輸出日志到Windows NT/2000/XP的事件日志
MemoryHandler:logging.handlers.MemoryHandler;日志輸出到記憶體中的指定buffer
HTTPHandler:logging.handlers.HTTPHandler;通過"GET"或者"POST"遠端輸出到HTTP伺服器
三、日志格式說明
logging.basicConfig函數中,可以指定日志的輸出格式format,這個參數可以輸出很多有用的資訊,如上例所示:
》》logging.basicConfig函數各參數: