我试图将消息记录到日志文件,然后关闭日志记录并将所有剩余的消息发送到新的日志文件。
但是,我观察到消息只发送到以前创建的日志文件。我怎样才能解决这个问题?
以下是我的代码:
logger_name = 'create_request'
request_Create_log = Code_vars.Requests_path+'Request_creation.log'
formatter = "%(asctime)s %(levelname)s %(message)s"
logging.basicConfig(filename=request_Create_log,filemode='a',level=logging.DEBUG,format=formatter)
req_logger = logging.getLogger(logger_name)
logging.shutdown()
#new logfile creation
logger_name = 'request_'+str(req_id)
formatter = "%(asctime)s %(levelname)s %(message)s"
logging.basicConfig(filename=log_file,filemode='a',level=logging.DEBUG,format=formatter)
logger = logging.getLogger(logger_name)
来自logging.shutdown()
文档:
通过刷新和关闭所有处理程序,通知日志记录系统执行有序关闭。这应该在应用程序出口处调用,并且在此调用之后不应再使用日志记录系统。
首先,如果您只是想切换处理程序/配置,那么您使用它是错误的 - 它并非用于此目的。其次,注意它说关闭处理程序,它不会删除它们,所以它们仍然在系统中。你可能想要的是清理旧的处理程序:
logger = logging.getLogger() # get the root logger
handlers = logger.handlers[:] # make a copy of the current handlers
for handler in handlers: # go through all available handlers and...
logger.removeHandler(handler) # remove them
然后重建您的记录器以执行您想要的操作。