| @@ -0,0 +1,48 @@ | |||||
| import os | |||||
| import sys | |||||
| import logging | |||||
| from time import strftime | |||||
| # 设置日志格式#和时间格式 | |||||
| # FMT = '%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s: %(message)s' | |||||
| FMT = '%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s: %(message)s' | |||||
| DATEFMT = '%Y-%m-%d %H:%M:%S' | |||||
| class MyLog(object): | |||||
| def __init__(self, log_path, type_='train'): | |||||
| self.logger = logging.getLogger() | |||||
| self.formatter = logging.Formatter(fmt=FMT, datefmt=DATEFMT) | |||||
| self.log_filename = os.path.join(log_path, 'train.log' if type_=='train' else 'test.log') | |||||
| # self.log_filename = '{0}{1}.log'.format(log_path, strftime("%Y-%m-%d")) | |||||
| # 输出到文件 | |||||
| self.logger.addHandler(self.get_file_handler(self.log_filename)) | |||||
| # 输出到控制台 | |||||
| # self.logger.addHandler(self.get_console_handler()) | |||||
| # 设置日志的默认级别 | |||||
| # 打印DEBUG级别以及以上的日志 | |||||
| # 级别排序为:CRITICAL > ERROR > WARNING > INFO > DEBUG | |||||
| self.logger.setLevel(logging.INFO) | |||||
| # 输出到文件handler的函数定义 | |||||
| def get_file_handler(self, filename): | |||||
| filehandler = logging.FileHandler(filename, encoding="utf-8") | |||||
| filehandler.setFormatter(self.formatter) | |||||
| return filehandler | |||||
| # 输出到控制台handler的函数定义 | |||||
| def get_console_handler(self): | |||||
| console_handler = logging.StreamHandler(sys.stdout) | |||||
| console_handler.setFormatter(self.formatter) | |||||
| return console_handler | |||||
| def setup_logger(log_path=None, type_='train'): | |||||
| # 输出日志路径 | |||||
| if log_path is not None: | |||||
| os.makedirs(log_path, exist_ok=True) | |||||
| return MyLog(log_path, type_).logger | |||||
| log_path = os.path.abspath('.') + '/logs/' | |||||
| return MyLog(log_path, type_).logger | |||||