Skip to content Skip to sidebar Skip to footer

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"