Python2.7 logging.config && logging.handlers

       之前了解过python的logging模块,最近整理笔记时发现还有一篇logging的配置遗漏在角落里没整理出来,在此把logging的配置整理出来,在使用python自带的logging模块落日志时是可以在代码内进行配置的,但是你见过哪些程序员会这样操作,一般都是把程序和配置文件进行分离的,这样配置文件有变动时,并不需要生成新的代码版本。python也有自带的logging.config模块,让程序通过解析log配置文件来获取日志的配置。

下面我们看看一个使用logging.config进行配置的例子:

#设置loggers,必须有root,其次设置你的自定义loggers,自定义了三个logger
[loggers]
keys=root,log1,log2,log3

#设置你自定义的handlers,自定义了三个handler
[handlers]
keys=hand1,hand2,hand3

#设置你自定义的日志格式,自定义了三个formatter
[formatters]
keys=form1,form2,form3

#配置每个logger的信息,logger的配置以[logger_xxx]进行配置,首先配置root
[logger_root]
level=NOTSET
handlers=hand1

#配置logger中log1的信息
[logger_log1]
level=INFO
handlers=hand1
propagate=0
qualname=log1

#配置logger中log2的信息
[logger_log2]
level=DEBUG
handlers=hand2
propagate=0
qualname=log2

#配置logger中log3的信息
[logger_log3]
level=ERROR
handlers=hand3
propagate=0
qualname=log3

#设置handler的信息,以[handler_xxx]开始进行设置,先设置hand1的信息
[handler_hand1]
class=FileHandler
level=INFO
formatter=form1
args=('../logs/log1.log','a')

#设置hand2的信息
[handler_hand2]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=form1
args=('../logs/log2.log','a','2000',9)

#设置hand3的信息
[handler_hand3]
class=handlers.TimedRotatingFileHandler
level=ERROR
formatter=form1
args=('../logs/log3.log','D',0,9)

#设置日志的格式,以[formatter_xxx]开始进行设置,先设置form1的格式
[formatter_form1]
format=%(asctime)s %(filename)s[line:%(lineno)d] %(process)d  %(levelname)s %(message)s
datefmt=%a,%d %b %Y %H:%M:%S

#设置form2的格式
[formatter_form2]
format=%(asctime)s %(filename)s[line:%(lineno)d] %(process)d %(levelname)s %(message)s
datefmt=%a,%d %b %Y %H:%M:%S

#设置form3的格式
[formatter_form3]
format=%(asctime)s %(filename)s[line:%(lineno)d] %(process)d %(levelname)s %(message)s
datefmt=%a,%d %b %Y %H:%M:%S

       以上配置文件中的参数大多数都可以在logging模块的doc文档中看到详细的解释,比如level、format、datefmt等等,但是handler的class设置的详细却在另外一个logging.handlers模块中,logging.handlers模块详细的解释了log可以以哪些方式落下来,以及日志文件相关的一些参数。

在设置完上面的log配置文件后,就可以在python代码中加载这个配置文件了:

import logging
import logging.config

logging.config.fileConfig("/opt/conf/logging.config")
logger1=logging.getLogger("log1")
logger2=logging.getLogger("log2")
logger3=logging.getLogger("log3")

#text
logger1.info("add email_contents")
    这样就可以把你设置的信息写入相关日志文件中了。本篇没有详细的解释日志文件的设置规范,因为这些信息都是和前面logging模块相关的,logging.config只是把硬编码在代码中的日志配置抽取出来而已。



转载于:https://my.oschina.net/guol/blog/364273

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值