更新:
TimedRotatingFileHandler
当我使用时无法正常工作multiprocessing
,我应该如何处理多处理日志记录?
我编写了自己的 Logger 类,如下所示,将其用作所有其他 python 脚本中的模块。
import logging
import logging.handlers
class Logger:
DEFAULT_LOG_OUTPUT = "/home/haifzhan/"
def __init__(self, logger_name, log_file_name, log_dir=DEFAULT_LOG_OUTPUT, log_level=logging.DEBUG):
self.logger = logging.getLogger(logger_name,)
self.formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
#self.file_handler = logging.FileHandler(log_dir + log_file_name)
file_path = log_dir + log_file_name
self.file_handler = logging.handlers.TimedRotatingFileHandler(file_path, when='H', backupCount=30)
self.file_handler.setFormatter(self.formatter)
self.logger.setLevel(log_level)
self.logger.addHandler(self.file_handler)
self.console_handler = logging.StreamHandler()
self.console_handler.setFormatter(self.formatter)
self.console_handler.setLevel(logging.DEBUG)
self.logger.addHandler(self.console_handler)
def get_logger(self):
return self.logger
在我的 python 脚本的顶部,我创建了一个 Logger 实例。
`logger = Logger("logger name", "logfile.log", log_dir=LOG_DIR, log_level=logging.INFO).get_logger()` # always put it at the top of my script
它在我使用时运行良好FileHandler
,不幸的是在我切换到. 日志文件轮换按预期工作,但不会记录所有行。控制台日志记录工作正常,怎么可能?TimedRotatingFileHandler
self.file_handler = logging.FileHandler(log_dir + log_file_name)
self.file_handler = logging.handlers.TimedRotatingFileHandler(file_path, when='H', backupCount=30)
谁能帮忙解决一下?</p>