【问题标题】:logging | error() gets sent to FileHandler... but not other Logging Levels日志 | error() 被发送到 FileHandler... 但不是其他日志记录级别
【发布时间】:2021-10-05 14:07:16
【问题描述】:

我可以将 错误 日志存储到文件中...但不能存储 info() 或任何其他 Logging Levels

我做错了什么?

如何将任何级别的日志存储到 FileHandler?


code.py

import sys
import logging

def setup_logging():
    global logger
    logger = logging.getLogger()
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    open('data_module.log', 'w').close()  # empty logs
    global fileHandler
    fileHandler = logging.FileHandler('data_module.log')
    fileHandler.setFormatter(formatter)
    fileHandler.setLevel(logging.DEBUG)
    logger.addHandler(fileHandler)
    logger.error('Started')  # info
    logger.info('information')  # info

test.py:

import code as c

c.setup_logging()

with open('data_module.log', 'r') as fileHandler:
    logs = [l.rstrip() for l in fileHandler.readlines()]
open('data_module.log', 'w').close()  # empty logs

assert len(logs) == 2

错误:

AssertionError: assert 1 == 2

如果还有什么需要补充的,请告诉我。

【问题讨论】:

    标签: python-3.x logging


    【解决方案1】:

    您需要为记录器本身设置级别:

    logger.setLevel(logging.DEBUG)
    

    默认的日志级别是WARN:当你写一个DEBUG级别的消息时,记录器不会处理它(即将它发送给一个处理程序)。您添加的处理程序永远不会被调用。

    处理程序可以有自己的级别,但只有在处理程序被调用后才会查询。如果 logger 向只对 INFO+ 消息感兴趣的处理程序发送 DEBUG 消息,则它什么也不做。

    【讨论】:

    • 我在logger = 之后使用了您的线路。谢谢你:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-06
    • 2019-06-05
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多