首页 > 解决方案 > Python 日志记录:在 `main.py` 中设置级别并继承给子记录器

问题描述

我有一个看起来像这样的 Python 项目:

my_project
  |- my_dir
  | |- part_1.py
  | |- part_2.py
  | |- ...
  |- main.py

每个文件(main.pypart_1.py, part_2.py, ...)都应该能够写入同一个日志文件,具有以下两个要求:

文件名应出现在日志消息中:日志文件中的一行应如下所示

ERROR - my_dir.part_1 - Something went wrong in part_1.py

所有记录器的日志级别应通过以下方式以编程方式设置main.py

# main.py
from my_dir import part_1, part_2, ...
...
logger.setLevel('DEBUG')
result_1 = part_1.my_function()  # Logger in part_1.py should be set to DEBUG level

logger.setLevel('WARNING')
result_2 = part_2.my_other_function()  # Logger in part_2.py should be set to WARNING level

我通过开始每个文件来完成第一个my_dir要求

import logging
logger = logging.getLogger(__name__)

如果我使用配置文件并执行logging.config.fileConfig('config.ini'). 但是对日志级别所做的更改main.py不会传播到其他记录器。处理这种情况的最佳方法是什么?

标签: pythonpython-3.xlogging

解决方案


推荐阅读