为了防止 FileHandler 记录器影响其他线程?
To to prevent FileHandler logger from impacting other threads?
我有一个自定义的 django 管理命令,我想捕获该命令为 运行 时的日志输出,并使其在单独的文件中可供下载。类似于 Jenkins 中的 "Console Output" 功能。此命令是使用 django-after-response 调用的,我正在 运行ning uWSGI。
在管理命令的开头,我这样做:
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)
然后在管理命令的最后:
logging.getLogger('').removeHandler(file_handler)
我 运行ning 遇到的问题是,当同时有多个 'deploys' 运行ning 时,一个线程的 deploy_log 将包含来自其他线程的条目线程。我该如何避免这种情况?
我相信我已经找到了解决办法。我必须将以下内容添加到我的 uwsgi vassal ini 文件中:
enable-threads = true
现在日志文件不会乱七八糟了。
我有一个自定义的 django 管理命令,我想捕获该命令为 运行 时的日志输出,并使其在单独的文件中可供下载。类似于 Jenkins 中的 "Console Output" 功能。此命令是使用 django-after-response 调用的,我正在 运行ning uWSGI。
在管理命令的开头,我这样做:
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)
然后在管理命令的最后:
logging.getLogger('').removeHandler(file_handler)
我 运行ning 遇到的问题是,当同时有多个 'deploys' 运行ning 时,一个线程的 deploy_log 将包含来自其他线程的条目线程。我该如何避免这种情况?
我相信我已经找到了解决办法。我必须将以下内容添加到我的 uwsgi vassal ini 文件中:
enable-threads = true
现在日志文件不会乱七八糟了。