记录 | error() 被发送到 FileHandler... 但不是其他日志记录级别

logging | error() gets sent to FileHandler... but not other Logging Levels

我可以将 error 日志存储到文件中...但不能 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

如果还有什么我应该添加到 post 的,请告诉我。

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

logger.setLevel(logging.DEBUG)

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

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