美文网首页
python之logging的文件配置

python之logging的文件配置

作者: 词穷又词贫 | 来源:发表于2017-11-17 23:44 被阅读1317次

logging模块的四个重点:
logger:日志生产者
handler:日志接收处理者(logger生产日志送给handler)
formatter:日志格式化(在handler接收到日志后需要绑定format日志格式处理)
filter:暂时略过

在日志配置文件如何定义logger,handler,formatter?
loggers:keys关联多个logger,其中root为必须(loggers与logger)
level:日志级别
handler:处理后输出位置
qualname:定义logger对象是需要绑定的日志策略名字
progarate:是否将日志传给上游(多级上游,顶级为root,以foo.A.B类似表示,foo就是A,B的顶级,A就是B的父级)
....

handlers:keys关联多个定义的handler
class:日志输出位置,StreamHandler,FileHandler,.......
level:日志级别
formatter:日志格式
args:日志处理对象的参数,比如StreamHandler输出参数可以是sys.stdout,必须是元组格式

 formatters:关联多个定义了的formatter
 format:日志格式
 datefmt:时间格式
 日志格式定义:
   %(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: 打印日志信息

配置文件定义:
loggers关联多个logger,formatters关联多个formatter,handlers关联多个handler
logger关联handler,handler定义输出与关联formatter

配置案例:

定义日志策略:
[loggers]
keys=root,l1,l2,l3

[handlers]
keys=h1,h2,h3

[formatters]
keys=f1,f2,f3

[logger_root]
level=NOTSET
handlers=h1

[logger_l1]
level=DEBUG
handlers=h1
qualname=h1
progarate=1

[logger_l2]
level=INFO
handlers=h2
qualname=h2
progarate=0

[logger_l3]
level=ERROR
handlers=h3
qualname=h3
 progarate=0

[handler_h1]
class=StreamHandler
level=NOTSET
formatter=f1
args=(sys.stdout,)

[handler_h2]
class=FileHandler
level=INFO
formatter=f2
args=('l2h2f2.txt','a')

[handler_h3]
class=FileHandler
level=ERROR
formatter=f3
args=('l3h3f3.txt','a')

[formatter_f1]
format='%(levelno)s - %(levelname)s - %(pathname)s - %(filename)s - %(funcName)s - %(lineno)d - %(thread)d - %(threadName)s - %(process)d - %(message)s'

[formatter_f2]
format='%(levelno)s - %(pathname)s - %(filename)s - %(funcName)s - %(lineno)d - %(thread)d - %(threadName)s - %(process)d - %(message)s'

[formatter_f3]
format='%(levelno)s - %(filename)s - %(funcName)s - %(lineno)d  - %(thread)d - %(threadName)s - %(process)d - %(message)s'

代码定义日志:

import logging
import logging.config
logging.config.fileConfig('logging1.ini')
# logger1 = logging.getLogger('h1')
# logger1.debug('debug message')
# logger1.info('info message')
# logger1.warning('warning message')
# logger1.error('error message')
# logger1.critical('critical message')

logger2 = logging.getLogger('h2')
logger2.debug('debug message')
logger2.info('info message')
logger2.warning('warning message')
logger2.error('error message')
logger2.critical('critical message')

logger3 = logging.getLogger('h3')
logger3.debug('debug message')
logger3.info('info message')
logger3.warning('warning message')
logger3.error('error message')
logger3.critical('critical message')

相关文章

网友评论

      本文标题:python之logging的文件配置

      本文链接:https://www.haomeiwen.com/subject/rjvsvxtx.html