1. 程式人生 > >python日誌模組---logging

python日誌模組---logging

通過ini檔案配置logging

logger.ini

[loggers]
keys=root,cLogger,fLogger,cfLogger

[logger_root]
level=DEBUG
handlers=fh

[logger_cLogger]
handlers=ch
qualname=cLogger
propagate=0

[logger_fLogger]
handlers=fh
qualname=fLogger
propagate=0

[logger_cfLogger]
level=DEBUG
handlers=fh,ch
qualname=cfLogger
propagate=0 [handlers] keys=ch,fh [handler_ch] class=StreamHandler level=DEBUG formatter=form02 args=(sys.stdout,) [handler_fh] class=FileHandler level=DEBUG formatter=form01 args=('my.log', 'a') [formatters] keys=form01,form02 [formatter_form01] format=%(asctime)s|%(name)s|%(levelname)s|[%(process)d,%(thread)d]|%(message)s|[%(filename)s,%(lineno)d]
datefmt=%Y-%m-%d %H:%M:%S [formatter_form02] format=%(asctime)s|%(name)s|%(levelname)s|[%(process)d,%(thread)d]|%(message)s|[%(filename)s,%(lineno)d] datefmt=%Y-%m-%d %H:%M:%S

format: 指定輸出的格式和內容,如上例所示:
%(levelno)s: 列印日誌級別的數值
%(levelname)s: 列印日誌級別名稱
%(pathname)s: 列印當前執行程式的路徑,其實就是sys.argv[0]
%(filename)s: 列印當前執行程式名
%(funcName)s: 列印日誌的當前函式
%(lineno)d: 列印日誌的當前行號
%(asctime)s: 列印日誌的時間
%(thread)d: 列印執行緒ID
%(threadName)s: 列印執行緒名稱
%(process)d: 列印程序ID
%(message)s: 列印日誌資訊

loggerdemo.py

# !/usr/bin/env python
# coding:utf-8


from logging.config import fileConfig
import logging

logging.config.fileConfig('logger.ini')
logger=logging.getLogger('cfLogger')
logger.info('hello python.')

螢幕上列印
D:\python\logger-demo> python .\loggerdemo.py
2018-03-12 22:18:42|cfLogger|INFO|[9464,5532]|hello python.|[loggerdemo.py,10]