# 标准库 import traceback, os, logging # 三方库 import configparser # 自己写的库 from library.dir_manager import DirManager class Log(DirManager): def __init__(self): super(Log, self).__init__() self.log() def log(self): # 判断是否存在log文件,如果不存在就创建 if not os.path.exists(self.log_dir + '//all_operate.log'): with open(self.log_dir + '//all_operate.log', 'w') as f: pass if not os.path.exists(self.log_dir + '//error.log'): with open(self.log_dir + '//error.log', 'w') as f: pass # 初始化log root_logger = logging.getLogger('root') root_logger.setLevel(level=logging.DEBUG) # logger级别设置为低级别,代表这个logger可以处理很多级别的日志,更灵活的处理放在logger中的各种handler中 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') all_operate_file_handler = logging.FileHandler(self.log_dir + '//all_operate.log') # 输出到文件 all_operate_file_handler.setLevel(logging.INFO) all_operate_file_handler.setFormatter(formatter) error_file_handler = logging.FileHandler(self.log_dir + '//error.log') # 输出到文件 error_file_handler.setLevel(logging.ERROR) error_file_handler.setFormatter(formatter) stream_handler = logging.StreamHandler() # 输出到控制台 stream_handler.setLevel(logging.INFO) stream_handler.setFormatter(formatter) root_logger.addHandler(all_operate_file_handler) root_logger.addHandler(error_file_handler) root_logger.addHandler(stream_handler) if __name__ == '__main__': x = Log()