【问题标题】:twisted logging to screen(stdout) not working扭曲的日志记录到屏幕(标准输出)不起作用
【发布时间】: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})

这不会在屏幕上打印任何内容。这是为什么呢?

【问题讨论】:

    标签: python logging twisted


    【解决方案1】:

    默认的 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'
    【解决方案2】:

    我从这里发现了 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})
    
    

    有没有更简单的方法。仅设置日志级别似乎过于复杂。

    【讨论】:

      【解决方案3】:

      您没有为您的记录器对象添加观察者。 这是一个简单的观察者,将日志打印到标准输出

       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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-24
        • 2011-06-19
        • 2011-11-03
        • 1970-01-01
        • 2017-04-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多