多进程python应用需要记录日志。使用队列似乎是最好的解决方案。logutils库提供了此功能。
是否可以分别设置两个处理程序的日志级别?例如,在下面的测试中,我希望STREAM 1具有警告消息,STREAM 2具有INFO消息。在代码末尾的测试日志中,将创建一个INFO消息,该消息不应从STREAM 1处理程序输出到控制台(警告)。但是,它输出到两个处理程序。
作为参考,我一直在使用该库的作者Vinay Sajip的此页面http://plumberjack.blogspot.co.uk/2010/09/improved-queuehandler-queuelistener.html。
# System imports
import logging
import logging.handlers
try:
import Queue as queue
except ImportError:
import queue
# Custom imports
from logutils.queue import QueueHandler, QueueListener
# Get queue
q = queue.Queue(-1)
# Setup stream handler 1 to output WARNING to console
h1 = logging.StreamHandler()
f1 = logging.Formatter('STREAM 1 WARNING: %(threadName)s: %(message)s')
h1.setFormatter(f1)
h1.setLevel(logging.WARNING) # NOT WORKING. This should log >= WARNING
# Setup stream handler 2 to output INFO to console
h2 …Run Code Online (Sandbox Code Playgroud)