python - Python 日志记录:在 `main.py` 中设置级别并继承给子记录器
问题描述
我有一个看起来像这样的 Python 项目:
my_project
|- my_dir
| |- part_1.py
| |- part_2.py
| |- ...
|- main.py
每个文件(main.py
和part_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
不会传播到其他记录器。处理这种情况的最佳方法是什么?
解决方案
推荐阅读
- reactjs - 我可以在 Jest 中获取 console.error() 的堆栈跟踪吗?
- python - 个人代码项目仅在某些时候有效
- django-models - 如何使用 Django 在查询中加入 3 个表,结合选择相关和 prefetch_related
- c# - C# FrameworkCore 和 MySQL:无法删除或更新父行:外键约束失败
- javascript - ER_NO_DB_ERROR:虽然数据库存在但没有数据库
- android - 如何在 FloatingActionButton 上显示图标?
- node.js - 如何从服务器响应中解析一些数据?
- css - Flexbox 项目不会进入容器底部?
- javascript - 当使用 ajax 在单行中切换按钮时,laravel 将状态更新为 0 或 1
- firebase - Firebase 可扩展性 - 超过 10 万用户同时跨多个区域