如何设置扭曲的日志级别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何设置扭曲的日志级别?相关的知识,希望对你有一定的参考价值。

我正在使用带有twisted的autobahn软件包,每次连接到websocket都显示调试消息。我试图将日志记录级别切换为info但没有成功:

import logging
logging.basicConfig(level=logging.INFO)

有没有简单的方法来切换日志级别?

更新。

这是twisted_service.py:

from twisted.application import service
from twisted.logger import Logger
import logging
logging.basicConfig(level=logging.INFO)


class WebsocketService(service.Service):
    log = Logger()

    def startService(self):
        service.Service.startService(self)
        self.log.debug('start service')

application = service.Application("ws")

ws_service = WebsocketService()
ws_service.setServiceParent(application)

我使用twistd脚本运行它:twistd -noy twisted_service.py然后我收到一条消息:

2018-03-03T10:45:22 + 0500 [builtin.WebsocketService#debug]启动服务

logging.basicConfig没有帮助。

答案

要查找所有记录器及其对应的名称,请执行:

logging.Logger.manager.loggerDict.keys()

尝试通过获取嘈杂的记录器实例来明确设置它:

import logging

noisyLogger = logging.getLogger("autobahn")  # adjust logger name
# noisyLogger.getEffectiveLevel()  # indicates the current effective level
noisyLogger.setLevel(logging.INFO)
另一答案

我找到了解决方案:

import sys
from twisted.application import service
from twisted.logger import LogLevelFilterPredicate, LogLevel
from twisted.logger import textFileLogObserver, FilteringLogObserver


class WebsocketService(service.Service):
    log = Logger()

    def startService(self):
        service.Service.startService(self)
        self.log.debug('start service')

application = service.Application("ws")

ws_service = WebsocketService()
ws_service.setServiceParent(application)

info_predicate = LogLevelFilterPredicate(LogLevel.info)
log_observer = FilteringLogObserver(textFileLogObserver(sys.stdout), predicates=info_predicate)

application.setComponent(ILogObserver, log_observer)

以上是关于如何设置扭曲的日志级别?的主要内容,如果未能解决你的问题,请参考以下文章

如何设置日志记录级别名称?

怎么设置日志级别

Django:如何将日志级别设置为 INFO 或 DEBUG

XCGLogger - 如何设置所有日志的日志级别

如何使用javascript修复HTML画布对象中的扭曲/扭曲和剪切图像?

如何设置和使用Log