通过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]