Logging模塊總結 2018/5/30
阿新 • • 發佈:2018-05-31
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 | 用戶輸出的消息 |
最簡單的方法:
- import logging模塊;
寫logging.語句;
運行結果:
將日誌寫到文件中:
和最簡單的方式不同的地方就是:在寫入過程中加入了logging.basicConfig語句(在這裏面可以添加各種日誌的格式,比如,寫入文件,路徑名,時間等等)
創建記錄日誌的文件,命名為example.log;
import logging模塊,寫基本配置.basicConfig;
{{LOGGING-03.gif(uploading...)}}只有當logging的級別高於基本配置裏面的級別的時候,語句才能被寫入到日誌當中;
如果在basicConfig裏面沒有指明level級別,那默認級別就是WARNING;
同時在屏幕和文件中寫入日誌:
- Logger部分:
1.1 生成logger對象:LOG = getLogger(‘給日誌起的名字~‘)
1.2 指定日誌級別:LOG.setLevel(logging.DEBUG/INFO/WARNING/...)(即為全局級別,可以不設置)
1.3 增加/刪除指定的Handler:Logger.addHandler(hdlr),removeHandler(hdlr)
------------------- 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/...)
----------------- formatter組件
3.1 設置formatter:formatter = logging.Formatter(‘%(asctime)s - %(name)s - %(levelname)s - %(message)s ......‘)(在其中添加日誌格式,獲取想要的相應的內容)
3.2 添加formatter組件:需要加配置的變量名.setFormatter(設置的formatter名字)
Logging模塊總結 2018/5/30