本文采用简单的方法工厂,配置根logger,实现logging 的简单调用,方便代码调试,记录并在控制台显示py文件和函数、行号及日志信息。 1、创建LogHelper.py LogHelper.py主要是对根logger设置日志文件,定义输出格式。日志文件为当前日期为文件名的txt文件,位于应用程序目录的logs子目录 import logging import logging.handlers import os import time # 初始化logger def InitLogger(logger): logs_dir = "logs" if os.path.exists(logs_dir) and os.path.isdir(logs_dir): pass else: os.mkdir(logs_dir) # 修改log保存位置 timestamp = time.strftime("%Y-%m-%d", time.localtime()) log_filename = '%s.txt' % timestamp log_filepath = os.path.join(logs_dir, log_filename) FileHandler = logging.handlers.RotatingFileHandler(filename=log_filepath, maxBytes=1024 * 1024 * 50, encoding='utf-8', backupCount=5) # 设置输出格式 formatter = logging.Formatter( '%(asctime)s - %(filename)s[line:%(lineno)d] - %(funcName)s - %(levelname)s: %(message)s') FileHandler.setFormatter(formatter) # 控制台句柄 console = logging.StreamHandler() console.setLevel(logging.NOTSET) console.setFormatter(formatter) # 添加内容到日志句柄中 logger.addHandler(FileHandler) logger.addHandler(console) logger.setLevel(logging.NOTSET) return logger
2、根Logger初始化(配置)主程序引用logging和LogHelper。通过工厂方法获取Logger实例logging.getLogger([name=None]),直接调用LogHelper.InitLogger方法: LogHelper.InitLogger(logging.getLogger("")) 或LogHelper.InitLogger(logging.getLogger())
注:logging.getLogger方法指定name,返回一个名称为name的Logger实例。如果再次使用相同的名字,是实例化一个对象。未指定name,返回Logger实例,名称是root,即根Logger。 3、logging调用由于初始化未指定name,返回根logger。主模块初始化根Logger后,以后任意均可直接调研logging的日志方法即可。如下所示: logging.info('this is a loggging info message')
logging.debug('this is a loggging debug message')
logging.warning('this is loggging a warning message')
logging.error('this is an loggging error message')
logging.critical('this is a loggging critical message')
即可在控制台和日志文件输出日志信息
|