我一直在学习python日志记录模块,但是在完成日志记录后一直无法关闭.这是一个示例-
I have been learning the python logging module but have been having problems getting the logging to shutdown after it's done. Here is an example -
import logging log = logging.getLogger() log.setLevel(logging.INFO) handler = logging.FileHandler('test.log') handler.setLevel(logging.INFO) formatter = logging.Formatter( fmt='%(asctime)s %(levelname)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) handler.setFormatter(formatter) log.addHandler(handler) log.info('log file is open') logging.shutdown() log.info('log file should be closed')但是在logging.shutdown()之后,模块仍在进行日志记录,因为日志文件如下所示-
But the module is stilling logging after the logging.shutdown() as the log file looks like this -
# cat test.log 2014-07-17 19:39:35 INFO: log file is open 2014-07-17 19:39:35 INFO: log file should be closed根据文档,此命令应通过刷新和关闭所有处理程序来执行有序关闭".我应该做些其他事情来关闭日志文件吗?
According to the documentation this command should "perform an orderly shutdown by flushing and closing all handlers". Should I be doing something else to close the log file ?
推荐答案因此,我发现使用shutdown()不能完全删除用于日志记录的文件处理程序.最好的方法似乎是手动删除文件处理程序-
So I found that the file handler for logging is not completely going away by using shutdown(). The best way seems to be to manually remove the file handler -
def main(): log = logging.getLogger() log.setLevel(logging.INFO) fh = logging.FileHandler(filename='test.log') fh.setLevel(logging.INFO) formatter = logging.Formatter( fmt='%(asctime)s %(levelname)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) fh.setFormatter(formatter) log.addHandler(fh) log.info('-------Start--------') log.info('this function is doing something') log.info('this function is finished') log.removeHandler(fh) <--------------------------Add this line del log,fh更多推荐
Python日志记录不会关闭
发布评论