python之logging的文件配置

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')
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,554评论 19 139
  • 本文章是我大概三年前,在上家单位使用 Python 工作时结合官方文档做的整理。现在 Python 官方文档听说已...
    好吃的野菜阅读 218,041评论 14 232
  • 本文翻译自logging howto 基础教程 日志是跟踪软件运行时发生事件的一种手段。Python开发者在代码中...
    大蟒传奇阅读 4,357评论 0 17
  • 本文首发于Gevin的博客 原文链接:Python 日志功能详解 未经 Gevin 授权,禁止转载 软件开发中通过...
    Gevin阅读 5,123评论 1 24
  • 嗨,小孩 房间里的闹钟在转动 你是否 听得见 现在几点钟 嗨,小孩 窗外头闪过了萤火虫 你是否 看得到 它们有几颗...
    向冉阅读 306评论 15 14

友情链接更多精彩内容