我正在使用python的日志记录模块。我已经将其初始化为:
import logging
logger = logging.getLogger(__name__)
在我的每个模块中。然后,在主文件中:
logging.basicConfig(level=logging.INFO,filename="log.txt")
现在,在应用程序中,我还使用了来自gevent的WSGIServer。初始化程序带有一个log参数,我可以在其中添加一个logger实例。由于这是HTTP服务器,因此非常冗长。
我想将我的应用程序的所有常规日志记录到“ log.txt”,并将WSGIServer的日志记录到“ http-log.txt”。
我尝试过:
logging.basicConfig(level=logging.INFO,filename="log.txt")
logger = logging.getLogger(__name__)
httpLogger = logging.getLogger("HTTP")
httpLogger.addHandler(logging.FileHandler("http-log.txt"))
httpLogger.addFilter(logging.Filter("HTTP"))
http_server = WSGIServer(('0.0.0.0', int(config['ApiPort'])), app, log=httpLogger)
这会将所有HTTP消息记录到http-log.txt中,也记录到主记录器中。
如何将除HTTP消息外的所有消息发送到默认记录器(log.txt),而仅将HTTP消息发送到http-log.txt?
编辑:由于人们迅速跳到指出此Logging to two files with different settings有答案,请阅读链接的答案,您会看到他们不使用basicConfig
而是分别初始化每个记录器。这不是我使用日志记录模块的方式。
答案 0 :(得分:2)