Logging From Python
Preface *Jack Lee*
logging是Python提供用於記錄日誌的模塊.
其中有6種日誌等級.
- NOTSET: 00 不設置.
- DEBUG: 10 詳細信息.
- INFO: 20 正常工作信息.
- WARNING: 30 警告信息.
- ERROR: 40 錯誤信息.
- CRITICAL: 50 致命信息.
Getting Start
- 設置低等級, 只會顯示當前等級和高於當前等級的信息.
- 要使用日誌模塊
- 創建日誌對象並設定等級
- 創建處理對象並設定等級
- 定義日誌格式
- 將處理對象添加到日誌對象中
import logging
# 創建log對象, 設置等級, 指定日誌記錄輸出文件.
logger = logging.getLogger('test_log.txt')
logger.setLevel(logging.DEBUG)
# 創建控制檯處理對象.
sh = logging.StreamHandler()
sh.setLevel(logging.ERROR)
# 創建log文件處理對象.
fh = logging.FileHandler('test_log.txt')
fh.setLevel(logging.DEBUG)
# 定義日誌格式.
fromatter = logging.Formatter('TIME:%(asctime)s LOG:%(levelname)s INFO:%(message)s')
sh.setFormatter(fromatter)
fh.setFormatter(fromatter)
# 將處理對象扔給log對象.
logger.addHandler(sh)
logger.addHandler(fh)
if __name__ == '__main__':
logger.debug('This is DEBUG')
logger.error('ERROR')
logger.info('info')
logger.critical('critical')
- Formatter日誌格式
- %(name)s: logger名字
- %(levelno)s: 日誌等級的數值形式
- %(levelname)s: 日誌等級的文本形式
- %(filename)s: 調用日誌輸出的文件名
- %(module)s: 調用日誌輸出的模塊名
- %(asctime)s: 當前時間的時間字符串
- %(message)s: 用戶輸出的信息
- %(funcName)s: 調用日誌輸出的函數名
- %(lineno)d: 調用日誌輸出函數的語句所在的代碼行
- %(created)f: 當前的時間, UNIX標準的浮點型表示.
- %(thread)d: 線程ID.
- %(threadName)s: 線程名.
- %(process)d: 進程ID.
- %(processName)s: 進程名.