python可配置日志logging

一、配置文件logger.ini

[loggers]#logger名称
keys=root,rotatingFileLogger,timeFileLogger

[handlers]#handler名称
keys=consoleHandler,rotatingFileHandler,timeFileHandler

[formatters]#格式名称
keys=simpleFormatter,detailFormatter

[logger_root]#在不指定的情况下默认的logger,必须有,否则报错,root为该logger的名称,在loggers中已经声明
#级别
level=DEBUG
#指定该logger的处理器(名称)
handlers=consoleHandler

[logger_timeFileLogger]#logger,timeFileLogger为该logger的名称,对应loggers中声明的名称
level=WARNING
#指定该logger的处理器的名称,可以是多个
handlers=consoleHandler,timeFileHandler
qualname=timeFileLogger
propagate=0

[logger_rotatingFileLogger]#logger,rotatingFileLogger为该logger的名称,对应loggers中声明的名称
level=DEBUG
#指定该logger的处理器的名称,可以是多个
handlers=consoleHandler,rotatingFileHandler
qualname=rotatingFileLogger
propagate=0

[handler_consoleHandler]#处理器,consoleHandler为该处理器的名称,对应handlers中声明的名称
#指定处理器类,该类一般为控制台打印输出
class=StreamHandler
level=DEBUG
#指定该处理器的日志格式(名称)
formatter=simpleFormatter
#该处理器StreamHandler的参数,在该类中有具体说明
args=(sys.stdout,)

[handler_rotatingFileHandler]#处理器,rotatingFileHandler为该处理器的名称,对应handlers中声明的名称
#指定处理器类,该类用于日志文件的转储
class=handlers.RotatingFileHandler
level=DEBUG
#指定该处理器的日志格式
formatter=simpleFormatter
#handlers.RotatingFileHandler类的参数,意义在该类中说的很明确
args=("tools/logs/access.log", "a", 1*1024*1024, 5)

[handler_timeFileHandler]#处理器,timeFileHandler为该处理器的名称,对应handlers中声明的名称
#指定处理器类,该类以时间为基础进行日志转储
class=handlers.TimedRotatingFileHandler
formatter=detailFormatter
#handlers.TimedRotatingFileHandler的参数,意义在该类中说的很明确
args=('tools/logs/errors.log','D',1,5)

[formatter_simpleFormatter]#设置格式,simpleFormatter该格式的名称,对应formatters中声明的格式名称
#format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
#日志的具体格式,在logging.Formatter类中有具体说明
format=%(asctime)s - %(thread)d - line %(lineno)d - in module: %(module)s, funcName:%(funcName)s - %(levelname)s : %(message)s
#日期格式,在logging.Formatter类中有具体说明
datefmt=%Y-%m-%d %H:%M:%S

[formatter_detailFormatter]#设置格式,detailFormatter该格式的名称,对应formatters中声明的格式名称
#format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
format=%(asctime)s -File "%(pathname)s", line %(lineno)d, in %(funcName)s - %(levelname)s :  %(message)s
datefmt=%Y-%m-%d %H:%M:%S

说明:以上属于个人配置,可以自行配置

二、使用

class LoggerConfig:
    def __init__(self):
        '''
        完成配置文件的加载和初始化
        '''
        # 以时间为转储标准转储log日志到文件error.log,级别waning
        self.logger_error = self.logger_load(logger_name='timeFileLogger',path='logger.ini')
        # 以文件大小为转储标准转储log日志到文件access.log,级别DEBUG
        self.logger_access = self.logger_load(logger_name='rotatingFileLogger',path='logger.ini')
        # 仅仅控制台或者终端输出
        self.console = self.logger_load(path='logger.ini')

    def logger_load(self,path,logger_name=''):
        '''
        加载log日志配置文件
        :param logger_name: logger名字,默认root
        :return: Logger对象
        '''
        config.fileConfig(path)
        return logging.getLogger(logger_name)
#单例
logger_config = LoggerConfig()
console = logger_config.console
access = logger_config.logger_access
error = logger_config.logger_error

说明:需要配合logging的级别函数使用,比如warning():

try:
    self.driver.get(url)#获取路径
except Exception as e:
    access.warning(e)

猜你喜欢

转载自blog.csdn.net/ryuhfxz/article/details/86749868