【问题标题】:How to use python's logging to log to the screen and to a file如何使用python的日志记录到屏幕和文件
【发布时间】:2018-09-08 18:37:17
【问题描述】:

我想使用 python 的日志记录到屏幕和文件

这是我登录屏幕的方式:

import logging
logging.basicConfig(level=logging.DEBUG)    
logging.debug('hello')

这就是我登录文件的方式:

import logging
logging.basicConfig(level=logging.DEBUG,filename='a.log')   
logging.debug('hello2')

有没有办法同时记录到文件和屏幕? 最好使用 logging.basicConfig

我正在使用 python 2.7.14

【问题讨论】:

标签: python python-2.7 logging


【解决方案1】:

如果您想要一个记录器用于屏幕,一个记录器用于日志文件,试试这个:

import logging


log = logging.getLogger('logger')
log.setLevel(logging.DEBUG)

formatter = logging.Formatter('%(message)s')

fh = logging.FileHandler('test.log', mode='w', encoding='utf-8')
fh.setLevel(logging.DEBUG)
fh.setFormatter(formatter)
log.addHandler(fh)

ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
ch.setFormatter(formatter)
log.addHandler(ch)

这会创建两个日志处理程序。当您调用log.debug/info/warning 等时,它将记录到您的每个处理程序。如果它们设置的级别相同或更高,它将记录消息,否则不会。

在本例中调用log.debug("test message") 会将str 测试消息保存到test.log,但您不会在屏幕上看到输出,因为StreamHandler() 的级别高于debug 调试。

当你调用log.info("test message")时,它会将str“测试消息保存到test.log输出到控制台,因为StreamHandler()的级别是info p>

log.setLevel(logging.DEBUG) 确保将记录所有内容。如果您排除此行,则将强制执行默认值 WARNING,并且即使您在单独的处理程序中设置较低的级别,您将无法记录任何内容 >= 该级别

日志记录的级别如下:

DEBUG
INFO
WARNING
ERROR
CRITICAL

【讨论】:

  • 我复制了你的代码,在最后添加了这一行:log.info('test') 并没有发生任何事情
  • 它打印了这个:test3 并在下一行:DEBUG:logger:test3
  • @Goolmoos 这个问题比我想象的要难。我所做的最后一次编辑应该这样做。
  • 仅供参考:刚刚使用 python 3.7.2 进行了测试,并且运行良好。谢谢。
【解决方案2】:

我成功了。这是我的代码:

import logging
formatter = logging.Formatter('%(message)s')
logging.getLogger('').setLevel(logging.DEBUG)
fh = logging.FileHandler('a.log')
fh.setLevel(logging.DEBUG)
fh.setFormatter(formatter)
logging.getLogger('').addHandler(fh)
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
ch.setFormatter(formatter)  
logging.getLogger('').addHandler(ch)
logging.debug('debug message')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 2017-04-13
    相关资源
    最近更新 更多