Python logging 通过配置文件实现日志滚存

import logging
from logging import config
from logging.handlers import TimedRotatingFileHandler,RotatingFileHandler
import configparser
import os
import pdb
conf = configparser.ConfigParser()
conf = configparser.RawConfigParser() #解决不能set 带%的问题

logtype = ['console','file','rotatingFile']

if os.path.exists('logging.ini'):
    conf.add_section('loggers')
    loggername = 'root,'+','.join([i+'Logger' for i in logtype])
    #conf.set('loggers', 'keys', 'root,consoleLogger,fileLogger,rotatingFileLogger')
    conf.set('loggers', 'keys', loggername)

    conf.add_section('handlers')
    loggerhanders = ','.join([i + 'Handler' for i in logtype])
    #conf.set('handlers', 'keys', 'consoleHandler,fileHandler,rotatingFileHandler')
    conf.set('handlers', 'keys', loggerhanders)

    conf.add_section('formatters')
    conf.set('formatters', 'keys', 'sampleFormatter')


    loggerlist = ['logger_'+i for i in loggername.split(',')]
    handlist = loggerhanders.split(',')
    handlist.insert(0, handlist[0])
    namelist = loggername.split(',')
    for i,j,k in zip(loggerlist,handlist,namelist):
        conf.add_section(i)
        conf.set(i, 'level', 'DEBUG')
        conf.set(i, 'handlers', j)
        conf.set(i, 'qualname', k) #root不需要
        conf.set(i, 'propagate', '0')
    #pdb.set_trace()

    conf.add_section('handler_consoleHandler')
    conf.set('handler_consoleHandler', 'class', 'StreamHandler')
    conf.set('handler_consoleHandler', 'level', 'DEBUG')
    conf.set('handler_consoleHandler', 'formatter', 'sampleFormatter')
    conf.set('handler_consoleHandler', 'args', 'sys.stdout,')

    conf.add_section('handler_fileHandler')
    conf.set('handler_fileHandler', 'class', 'FileHandler')
    conf.set('handler_fileHandler', 'level', 'DEBUG')
    conf.set('handler_fileHandler', 'formatter', 'sampleFormatter')
    conf.set('handler_fileHandler', 'args', "('logs/logging.log', 'a')")

    conf.add_section('handler_rotatingFileHandler')
    conf.set('handler_rotatingFileHandler', 'class', 'handlers.RotatingFileHandler')
    conf.set('handler_rotatingFileHandler', 'level', 'DEBUG')
    conf.set('handler_rotatingFileHandler', 'formatter', 'sampleFormatter')
    conf.set('handler_rotatingFileHandler', 'args', "('logs/rotating_logging.log', 'a', 1, 5)")

    conf.add_section('formatter_sampleFormatter')
    conf.set('formatter_sampleFormatter', 'format', r'%(asctime)s - %(module)s - %(thread)d - %(levelname)s : %(message)s')
    conf.set('formatter_sampleFormatter', 'datefmt', r"%Y-%m-%d %H:%M:%S")
    #conf.set('formatter_sampleFormatter', 'datefmt', r"c")

    # 写入文件
    with open('logging.ini', 'w') as fw:
        conf.write(fw)

config.fileConfig(fname='logging.ini', disable_existing_loggers=False)
logger = logging.getLogger("rotatingFileLogger")


a = 5
b = 1
try:
    c = a / b
    logger.info('This is an info message')
except Exception as e:
    # 下面三种方式三选一,推荐使用第一种
    # logging.exception("Exception occurred")
    # logging.error("Exception occurred", exc_info=True)
    # logging.log(level=logging.DEBUG, msg="Exception occurred", exc_info=True)
    logger.error('This is an error message')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值