本文采用簡單的方法工廠,配置根logger,實現(xiàn)logging 的簡單調用,方便代碼調試,記錄并在控制臺顯示py文件和函數、行號及日志信息。 1、創(chuàng)建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后,以后任意均可直接調研l(wèi)ogging的日志方法即可。如下所示: 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')
即可在控制臺和日志文件輸出日志信息
|