问题
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