python(logging )日誌模塊學習

0.前置說明

1.基本元素說明:

  • Logger:用於輸出的日誌的總對象
  • Handlers:用來指定log的輸出方式
  • Formatters:設置日誌信息的結構和內容格式,默認的時間格式爲%Y-%m-%d %H:%M:%S
  • Filter:過濾器,用來過濾的輸出內容(如:只輸出debug以上的內容)

Logger

經常使用函數

  • LOG=logging.getLogger(」chat.gui」)
  • Logger.setLevel(lel):指定最低的日誌級別,低於lel的級別將被忽略。debug是最低的內置級別,critical爲最高
  • Logger.addFilter(filt)、Logger.removeFilter(filt):添加或刪除指定的filter
  • Logger.addHandler(hdlr)、Logger.removeHandler(hdlr):增長或刪除指定的handler
  • Logger.debug()、Logger.info()、Logger.warning()、Logger.error()、Logger.critical():能夠設置的日誌級別
  • Logger.log("debug","This is a bug"):能夠經過這個函數直接輸出內容並選擇對應的告警級別

內置級別

名稱 對應數字級別
NOTSET 0
DEBUG 10
INFO 20
WARNING 30
ERROR 40
CRITICAL 50

Handlers

1.經常使用函數

  • Handler.setLevel(lel):指定被處理的信息級別,低於lel級別的信息將被忽略
  • Handler.setFormatter():給這個handler選擇一個格式
  • Handler.addFilter(filt)、Handler.removeFilter(filt):新增或刪除一個filter對象

2.Handler種類

  1. logging.StreamHandler
    使用這個Handler能夠向相似與sys.stdout或者sys.stderr的任何文件對象(file object)輸出信息。
    它的構造函數是:StreamHandler([strm])
    其中strm參數是一個文件對象。
    默認是sys.stderrpython

  2. logging.FileHandler
    和StreamHandler相似,用於向一個文件輸出日誌信息。不過FileHandler會幫你打開這個文件。
    它的構造函數是:FileHandler(filename[,mode])
    filename是文件名,必須指定一個文件名。
    mode是文件的打開方式。
    默認是’a',即添加到文件末尾。網絡

  3. logging.handlers.RotatingFileHandler
    這個Handler相似於上面的FileHandler,可是它能夠管理文件大小。當文件達到必定大小以後,它會自動將當前日誌文件更名,而後建立一個新的同名日誌文件繼續輸出。好比日誌文件是chat.log。當chat.log達到指定的大小以後,RotatingFileHandler自動把 文件更名爲chat.log.1。不過,若是chat.log.1已經存在,會先把chat.log.1重命名爲chat.log.2。。。最後從新建立 chat.log,繼續輸出日誌信息。
    它的構造函數是:RotatingFileHandler( filename[, mode[, maxBytes[, backupCount]]])
    其中filename和mode兩個參數和FileHandler同樣。
    maxBytes用於指定日誌文件的最大文件大小。若是maxBytes爲0,意味着日誌文件能夠無限大,這時上面描述的重命名過程就不會發生。
    backupCount用於指定保留的備份文件的個數。好比,若是指定爲2,當上面描述的重命名過程發生時,原有的chat.log.2並不會被改名,而是被刪除。python2.7

  4. logging.handlers.TimedRotatingFileHandler
    這個Handler和RotatingFileHandler相似,不過,它沒有經過判斷文件大小來決定什麼時候從新建立日誌文件,而是間隔必定時間就 自動建立新的日誌文件。重命名的過程與RotatingFileHandler相似,不過新的文件不是附加數字,而是當前時間。它的構造函數是:
    TimedRotatingFileHandler( filename [,when [,interval [,backupCount]]])
    其中filename參數和backupCount參數和RotatingFileHandler具備相同的意義。
    interval是時間間隔。
    when參數是一個字符串。表示時間間隔的單位,不區分大小寫。它有如下取值:
    S 秒
    M 分
    H 小時
    D 天
    W 每星期(interval==0時表明星期一)
    midnight 天天凌晨函數

  5. logging.handlers.SocketHandler
  6. logging.handlers.DatagramHandler
    以上兩個Handler相似,都是將日誌信息發送到網絡。不一樣的是前者使用TCP協議,後者使用UDP協議。它們的構造函數是:
    Handler(host, port)
    其中host是主機名,port是端口名
  7. logging.handlers.SysLogHandler
  8. logging.handlers.NTEventLogHandler
  9. logging.handlers.SMTPHandler
  10. logging.handlers.MemoryHandler
  11. logging.handlers.HTTPHandler

Formatters

參數 含義
%(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 字符串形式的當前時間。默認格式是 「2003-07-08 16:49:45,896」。逗號後面的是毫秒
%(thread)d 線程ID。可能沒有
%(threadName)s 線程名。可能沒有
%(process)d 進程ID。可能沒有
%(message)s 用戶輸出的消息
相關文章
相關標籤/搜索