本文共 2974 字,大约阅读时间需要 9 分钟。
import loggingimport logging.handlersimport osimport timeclass Logs(object): def __init__(self): self.logger = logging.getLogger("") # 设置输出的等级 LEVELS = {'NOSET': logging.NOTSET, 'DEBUG': logging.DEBUG, 'INFO': logging.INFO, 'WARNING': logging.WARNING, 'ERROR': logging.ERROR, 'CRITICAL': logging.CRITICAL} # 创建文件目录 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.log' % timestamp log_file_path = os.path.join(logs_dir, log_filename) rotating_file_handler = logging.handlers.RotatingFileHandler(filename=log_file_path, maxBytes=1024 * 1024 * 5, backupCount=5) # 设置输出格式 formatter = logging.Formatter('[%(asctime)s] ' '[%(levelname)s] ' '%(message)s', '%Y-%m-%d %H:%M:%S') # formatter = logging.Formatter('%(asctime)s - %(filename)s:[line:%(lineno)s] - %(name)s - %(message)s') rotating_file_handler.setFormatter(formatter) # 控制台句柄 console = logging.StreamHandler() console.setLevel(logging.NOTSET) console.setFormatter(formatter) # 添加内容到日志句柄中 self.logger.addHandler(rotating_file_handler) self.logger.addHandler(console) self.logger.setLevel(logging.NOTSET) def debug(self, message): self.logger.debug(message) def info(self, message): self.logger.info(message) def warning(self, message): self.logger.warning(message, exc_info=1) def error(self, message): self.logger.error(message, exc_info=1)
import multiprocessingimport sysimport logging.handlers# 日志# 方便的调试,可以用logginglogger = multiprocessing.get_logger()logger.setLevel(logging.INFO)# 创建一个handler,用于写入日志文件fh = logging.handlers.RotatingFileHandler("log1.log", maxBytes=1024 * 1024, backupCount=5)fh.setLevel(logging.DEBUG)fe = logging.handlers.RotatingFileHandler("error.log", maxBytes=1024 * 1024, backupCount=5)fe.setLevel(logging.ERROR)# 定义handler的输出格式formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')fh.setFormatter(formatter)fe.setFormatter(formatter)logger.addHandler(fh)logger.addHandler(fe)def worker(): print('Doing some work') logger.info("INFO in worker") logger.debug("DEBUG in worker") logger.error("ERROR in worker") logger.warning("WARNING in worker") logger.critical("CRITICAL in worker") sys.stdout.flush()if __name__ == '__main__': multiprocessing.log_to_stderr() p = multiprocessing.Process(target=worker) p.start() p.join()
转载地址:http://epsfb.baihongyu.com/