twisted logging to screen(stdout) not working

南楼画角 提交于 2019-12-11 06:05:08

问题


i have this small program taken from here

from twisted.logger import Logger
log = Logger()

def handleData(data):
    log.debug("Got data: {data!r}.", data=data)

handleData({'a':20})

This does not prints anything to the screen .why is that?


回答1:


The default python logger is set to WARN level, so DEBUG messages are suppressed. You can make that code work like -

import logging
from twisted.logger import Logger
log = Logger()
log.setLevel(logging.DEBUG)

def handleData(data):
    log.debug("Got data: {data!r}.", data=data)

handleData({'a':20})



回答2:


i figured it out from here https://github.com/moira-alert/worker/blob/master/moira/logs.py:

import logging
from twisted.logger import Logger, LogLevel
import sys


from twisted.logger import globalLogPublisher
from twisted.logger import textFileLogObserver
from twisted.logger import FilteringLogObserver, LogLevelFilterPredicate, LogLevel



log = Logger()


level = LogLevel.debug
predicate = LogLevelFilterPredicate(defaultLogLevel=level)
observer = FilteringLogObserver(textFileLogObserver(sys.stdout), [predicate])
observer._encoding = "utf-8"
globalLogPublisher.addObserver(observer)
log.info("Start logging with {l}", l=level)

def handleData(data):
    log.debug("Got data: {data!r}.", data=data)

handleData({'a':20})

Is there any simpler way . it seems overly complicated just to set log level.



来源:https://stackoverflow.com/questions/57657962/twisted-logging-to-screenstdout-not-working

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!