1. 程式人生 > >Logging模塊總結 2018/5/30

Logging模塊總結 2018/5/30

process 消息 handle con eno 表示 onf evel log

日誌的級別

Level 用處 數字級別
DEBUG 詳細的信息,在調試過程中用於診斷錯誤 10
INFO 用於確認事件正在運行 20
WARNING 意外發生時予以提醒,或者預測一些未來可能發生的一些問題(比如:磁盤空間低等) 30
ERROR 當一些錯誤發生,導致軟件無法正常完成一些功能時 40
CRITICAL 嚴重的錯誤發生,表明程序本身無法繼續運行 50

如果不設置日誌的級別,電腦則會選擇使用默認的級別進行過濾信息:
全局默認級別:WARNING;
屏幕顯示級別:DEBUG;
文件顯示級別:WARNING。

定義日誌的格式

%(name)s Logger的名字
%(levelno)s 數字形式的日誌級別
%(levelname)s 文本形式的日誌級別
%(pathname)s 調用日誌輸出函數的模塊的完整路徑名,可能沒有
%(filename)s 調用日誌輸出函數的模塊的文件名
%(module)s 調用日誌輸出函數的模塊名
filename&module區別 文件名有.py,模塊名則沒有
%(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 用戶輸出的消息

最簡單的方法:

  1. import logging模塊;
  2. 寫logging.語句;

    運行結果:技術分享圖片

將日誌寫到文件中:

最簡單的方式不同的地方就是:在寫入過程中加入了logging.basicConfig語句(在這裏面可以添加各種日誌的格式,比如,寫入文件,路徑名,時間等等)

  1. 創建記錄日誌的文件,命名為example.log;
    技術分享圖片

  2. import logging模塊,寫基本配置.basicConfig;
    {{LOGGING-03.gif(uploading...)}}

    只有當logging的級別高於基本配置裏面的級別的時候,語句才能被寫入到日誌當中;
    如果在basicConfig裏面沒有指明level級別,那默認級別就是WARNING;

同時在屏幕和文件中寫入日誌:

  1. Logger部分
    1.1 生成logger對象:LOG = getLogger(‘給日誌起的名字~‘)
    1.2 指定日誌級別:LOG.setLevel(logging.DEBUG/INFO/WARNING/...)(即為全局級別,可以不設置)
    1.3 增加/刪除指定的Handler:Logger.addHandler(hdlr),removeHandler(hdlr)
    ------------------
  2. Handler部分:(本次僅記錄logging.StreamHandler,logging.FileHandler)
    2.1 生成Handler對象:
    向屏幕輸出 screen_han = logging.StreamHandler()
    設置Handler級別:screen_han.setLevel(logging.DEBUG/INFO/WARNING/...)
    向文件輸出 file_han = logging.FileHandler();
    設置Handler級別:file_han.setLevel(logging.DEBUG/INFO/WARNING/...)
    ----------------
  3. formatter組件
    3.1 設置formatter:formatter = logging.Formatter(‘%(asctime)s - %(name)s - %(levelname)s - %(message)s ......‘)(在其中添加日誌格式,獲取想要的相應的內容)
    3.2 添加formatter組件:需要加配置的變量名.setFormatter(設置的formatter名字)
    技術分享圖片

Logging模塊總結 2018/5/30