流handler——包含在logging模塊中的三個handler之一。html
可以將日誌信息輸出到sys.stdout, sys.stderr 或者類文件對象(更確切點,就是可以支持write()和flush()方法的對象)。python
只有一個參數:linux
日誌信息會輸出到指定的stream中,若是stream爲空則默認輸出到sys.stderr。windows
logging模塊自帶的三個handler之一。繼承自StreamHandler。將日誌信息輸出到磁盤文件上。app
構造參數:socket
模式默認爲append,delay爲true時,文件直到emit方法被執行纔會打開。默認狀況下,日誌文件能夠無限增大。spa
空操做handler,logging模塊自帶的三個handler之一。
沒有參數。設計
位於logging.handlers模塊中。用於監視文件的狀態,若是文件被改變了,那麼就關閉當前流,從新打開文件,建立一個新的流。因爲newsyslog或者logrotate的使用會致使文件改變。這個handler是專門爲linux/unix系統設計的,由於在windows系統下,正在被打開的文件是不會被改變的。
參數和FileHandler相同:3d
位於logging.handlers支持循環日誌文件。unix
class logging.handlers.RotatingFileHandler(filename, mode='a', maxBytes=0, backupCount=0, encoding=None, delay=0)
參數maxBytes和backupCount容許日誌文件在達到maxBytes時rollover.當文件大小達到或者超過maxBytes時,就會新建立一個日誌文件。上述的這兩個參數任一一個爲0時,rollover都不會發生。也就是就文件沒有maxBytes限制。backupcount是備份數目,也就是最多能有多少個備份。命名會在日誌的base_name後面加上.0-.n的後綴,如example.log.1,example.log.1,…,example.log.10。當前使用的日誌文件爲base_name.log。
定時循環日誌handler,位於logging.handlers,支持定時生成新日誌文件。
class logging.handlers.TimedRotatingFileHandler(filename, when='h', interval=1, backupCount=0, encoding=None, delay=False, utc=False)
參數when決定了時間間隔的類型,參數interval決定了多少的時間間隔。如when=‘D’,interval=2,就是指兩天的時間間隔,backupCount決定了能留幾個日誌文件。超過數量就會丟棄掉老的日誌文件。
when的參數決定了時間間隔的類型。二者之間的關係以下:
utc參數表示UTC時間。
這些handler都不怎麼經常使用,因此具體介紹就請參考官方文檔 其餘handlers
下面使用簡單的例子來演示handler的使用:
輸出到控制檯的結果:
log.conf 日誌配置文件:
獲取logger方法:
配置logger而且調用:
控制檯和日誌文件中都會輸出: