【发布时间】:2019-12-30 15:33:34
【问题描述】:
我有这个小程序taken from here
from twisted.logger import Logger
log = Logger()
def handleData(data):
log.debug("Got data: {data!r}.", data=data)
handleData({'a':20})
这不会在屏幕上打印任何内容。这是为什么呢?
【问题讨论】:
我有这个小程序taken from here
from twisted.logger import Logger
log = Logger()
def handleData(data):
log.debug("Got data: {data!r}.", data=data)
handleData({'a':20})
这不会在屏幕上打印任何内容。这是为什么呢?
【问题讨论】:
默认的 python 记录器设置为 WARN 级别,因此 DEBUG 消息被抑制。您可以使该代码像 -
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})
【讨论】:
AttributeError: 'Logger' object has no attribute 'setLevel'
我从这里发现了 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})
有没有更简单的方法。仅设置日志级别似乎过于复杂。
【讨论】:
您没有为您的记录器对象添加观察者。 这是一个简单的观察者,将日志打印到标准输出
import sys
from twisted.logger import Logger, eventAsText, FileLogObserver
log = Logger()
log.observer.addObserver(FileLogObserver(sys.stdout, lambda e: eventAsText(e) + "\n"))
someData = 2
log.debug("Got data: {data!r}", data=someData)
【讨论】: