记录模块将所有未发送的消息发送到另一个文件(Python)

时间:2017-12-19 11:31:35

标签: python-3.x logging

我正在尝试将消息记录到日志文件中,然后关闭日志记录并将所有剩余消息发送到新的日志文件

但是,我观察到消息只会转到以前创建的日志文件中。我该如何解决这个问题?

以下是我的代码:

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)

1 个答案:

答案 0 :(得分:0)

来自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

然后重建你的记录器以做你想做的事。