天天看點

logging basic

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函數各參數:

繼續閱讀