python配置按日期切分的logging

一、定义一个yml文件

version: 1
disable_existing_loggers: False
formatters:
 simple:
   format: '%(asctime)s [%(name)s:%(lineno)d] [%(levelname)s]- %(message)s'
handlers:
 console:
   class: logging.StreamHandler
   level: DEBUG
   formatter: simple
   stream: ext://sys.stdout
 console_err:
   class: logging.StreamHandler
   level: DEBUG
   formatter: simple
   stream: ext://sys.stderr
 console_file:
   class : logging.handlers.TimedRotatingFileHandler
   formatter: simple
   filename: ../../logs/run.log
   interval: 1
   backupCount: 30
   encoding: utf8
   when: D
loggers:
 runLogger:
   level: INFO
   handlers: [console_file]
   propagate: 0
root:
 level: DEBUG
 handlers: [console_err]

  • version:schema的版本号,目前官方固定值是1,这个参数看起来是为了方便向后兼容。
  • disable_existing_loggers:新创建的logger是否要将老的logger过期。
  • formatters:日期的格式(还可以设定一个标准格式,我这里没有用,可以看文档)。
  • handlers:logging的hadler,包含多项子设置。
  • console:这个是约定的节点命名,通常用户打印信息到控制台。
    • class:日志输出流要使用的类,这里使用logging.StreamHandler输出流。
    • level:日志级别,不再赘述。
    • formatter:要使用的日志格式。
    • stream:ext://sys.stdout表示输出到标准输出,ext://是必须的。
  • console_err:与console同理,是约定的节点命名,通常用于处理异常。
  • console_file:这个是我自定义的,输出到文件的节点。
    • class : logging.handlers.TimedRotatingFileHandler,以时间的方式滚动分割。
    • filename:文件完整路径。
    • interval:增量的频率,我这里要做的是1天。
    • backupCount:保留的文件数。
    • encoding:文件编码
    • when:D表示天,还有H,M等。
  • loggers:自定义的logger组。
  • runLogger:我自己起的名字,用于记录运行日志。
  • handlers:引用上面定义好的某个handler。
  • propagate:递归调用日志记录器的级别,0表示不调用,1会调用root。
  • root:定义默认的root的logger配置。

二、代码示例

import yaml
import os
import logging.config
class LogUtil:
    #创建一个字典,用户保存配置
    dictConf = {}
    #配置文件的目录
    LOGGER_CONF_PATH = '../../conf'
    #配置文件的名称
    LOGGER_CONF_NAME = 'logging.yml'
    #构造方法
    def __init__(self):
        logYamlPath = self.LOGGER_CONF_PATH + os.sep + self.LOGGER_CONF_NAME
        self.dictConf = yaml.load(open(logYamlPath, 'r'))
    #获得一个logger
    LOGGER_NAME = 'runLogger'
    def getLogger(self,loggerName = LOGGER_NAME):
        logging.config.dictConfig(self.dictConf)
        logger = logging.getLogger(loggerName)
        return logger
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值