为了防止FileHandler记录器影响其他线程?

时间:2015-11-24 23:43:48

标签: python django logging uwsgi

我有一个自定义的django admin命令,我想捕获该命令运行时的日志输出,并使其可以在单独的文件中下载。与Jenkins中的“控制台输出”功能类似。使用django-after-response调用此命令,我正在运行uWSGI。

在admin命令的开头,我这样做:

deploy_log = NamedTemporaryFile()
formatter = logging.Formatter("%(asctime)-15s %(levelname)-8s %(message)s")
file_handler = logging.FileHandler(deploy_log.name)
file_handler.setFormatter(formatter)
file_handler.setLevel(logging.INFO)
logging.getLogger('').addHandler(file_handler)

然后在admin命令的末尾:

logging.getLogger('').removeHandler(file_handler)

我遇到的问题是,当同时运行多个“部署”时,一个线程的deploy_log将包含来自其他线程的条目。我该如何避免这种情况?

1 个答案:

答案 0 :(得分:0)

我相信我找到了解决方案。我不得不将以下内容添加到我的uwsgi vassal ini文件中:

enable-threads = true

现在日志文件没有混杂在一起。