我有一个自定义的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将包含来自其他线程的条目。我该如何避免这种情况?
答案 0 :(得分:0)
我相信我找到了解决方案。我不得不将以下内容添加到我的uwsgi vassal ini文件中:
enable-threads = true
现在日志文件没有混杂在一起。