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')
Python logging 通过配置文件实现日志滚存
最新推荐文章于 2022-11-23 00:01:07 发布