Logging經常使用handlers的使用

1、StreamHandler

流handler——包含在logging模塊中的三個handler之一。html

可以將日誌信息輸出到sys.stdout, sys.stderr 或者類文件對象(更確切點,就是可以支持write()和flush()方法的對象)。python

只有一個參數:linux

日誌信息會輸出到指定的stream中,若是stream爲空則默認輸出到sys.stderr。windows

2、FileHandler

logging模塊自帶的三個handler之一。繼承自StreamHandler。將日誌信息輸出到磁盤文件上。app

構造參數:socket

模式默認爲append,delay爲true時,文件直到emit方法被執行纔會打開。默認狀況下,日誌文件能夠無限增大。spa

3、NullHandler

空操做handler,logging模塊自帶的三個handler之一。
沒有參數。設計

4、WatchedFileHandler

位於logging.handlers模塊中。用於監視文件的狀態,若是文件被改變了,那麼就關閉當前流,從新打開文件,建立一個新的流。因爲newsyslog或者logrotate的使用會致使文件改變。這個handler是專門爲linux/unix系統設計的,由於在windows系統下,正在被打開的文件是不會被改變的。
參數和FileHandler相同:3d

5、RotatingFileHandler

位於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。

6、TimedRotatingFileHandler

定時循環日誌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時間。

7、其餘handler——SocketHandler、DatagramHandler、SysLogHandler、NtEventHandler、SMTPHandler、MemoryHandler、HTTPHandler

這些handler都不怎麼經常使用,因此具體介紹就請參考官方文檔 其餘handlers

下面使用簡單的例子來演示handler的使用:

例子一——不使用配置文件的方式(StreamHandler):

輸出到控制檯的結果:

例子二——使用配置文件的方式(TimedRotatingFileHandler) :

log.conf 日誌配置文件:

獲取logger方法:

配置logger而且調用:

控制檯和日誌文件中都會輸出:

相關文章
相關標籤/搜索