【发布时间】:2022-11-12 17:12:23
【问题描述】:
我有 - 我相信 - 一个带有两个处理程序的相当标准的记录器配置:文件和流。文件处理程序工作得非常好,我可以用自己的级别控制输出文件的内容,但是流处理程序似乎没有做任何事情,无论我是否添加 StreamHandler,所有根日志都传递到标准输出。任何人都会知道我做错了什么?
我在 Ubuntu 20.04 上运行 python3.10,这里是配置:
import logging
import sys
# root logger
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
# terminal logger
stream_handler = logging.StreamHandler()
stream_handler.setLevel(logging.CRITICAL)
logger.addHandler(stream_handler)
# file logger
file_handler = logging.FileHandler(f'logs/{__name__}.txt', 'w')
file_handler.setLevel(logging.DEBUG)
logger.addHandler(file_handler)
我试图将 sys.stdout 作为 StreamHandler() 的参数传递,但它没有改变结果。 有了上面的内容,我希望控制台只打印 CRITICAL 但它显示所有级别:
DEBUG:network:deserialized data: ['111', 'idle', 'normal']
INFO:network:ID:100 ['normal'] already exists, storing server_states[587]: (-13, 2890, 35, 69)
DEBUG:network:_entity.position.server_states={583: <rect(-17, 2713, 35, 69)>}
INFO:network:sending:100|idle['normal']|480;971;35;69|right|0|0|1000.0|3|None|0|0;0|0;0;0;0;0;0
INFO:network:received:107|idle['normal','collectable']12;2935;35;69|left|0|0|1000.0|3|None|45.1
我想知道它是否与记录器名称有关(来自模块的动态姓名) ?
【问题讨论】:
标签: python logging python-logging