Twisted Logging To Screen(stdout) Not Working
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':
Solution 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})
Solution 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)
defhandleData(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.
Solution 3:
You didn't add observer for your logger object. here is a simple observer that print the log to stdout
import sys
from twisted.logger import Logger, eventAsText, FileLogObserver
log = Logger()
log.observer.addObserver(FileLogObserver(sys.stdout, lambda e: eventAsText(e) + "\n"))
someData = 2log.debug("Got data: {data!r}", data=someData)
Post a Comment for "Twisted Logging To Screen(stdout) Not Working"