python日志无输出
python logging一场 disabled引发的血案
以fastapi为例,启动用的uvicorn.run()
当用户配置了自己日志之后,框架自带的日志就无输出了
这篇文章以两个部分说明原理
第一部分: 伪代码复现场景
第二部分: uvicorn
源码
- 第一部分: 以下方代码为例复现场景
- code
import logging import logging.config logging.basicConfig( level=logging.DEBUG, format="basicConfig:test >> %(asctime)s %(filename)s:%(lineno)d [%(levelname)s] %(message)s" ) test_logger = logging.getLogger("demo") def init_logger(): config = { "version": 1, "formatters": { "simple": { "format": "init_logger>> %(asctime)s %(filename)s:%(lineno)d [%(levelname)s] [%(funcName)s] %(message)s" } }, "handlers": { "console": { "class": "logging.StreamHandler", "formatter": "simple", "level": "DEBUG", "stream": "ext://sys.stdout" }, "run": { "backupCount": 5, "class": "logging.handlers.RotatingFileHandler", "encoding": "utf-8", "filename": "./run.log", "formatter": "simple", "level": "DEBUG", "maxBytes": 104857600 }}, "loggers": { "run": { "handlers": [ "console", "run" ], "level": "INFO", "propagate": False } }, "root": { "handlers": [ "console" ], "level": "DEBUG" } } logging.config.dictConfig(config) return logging.getLogger('run') test_logger.info("test_logger start") logger = init_logger() logger.info("用户初始化的日志") # test_logger.disabled = False test_logger.info("test_logger end")
- 输出
如上 以上test_logger end
无输出, 在放开test_logger.disabled = False
这行注释后,可以正常输出如下
日志的disabled
属性意义在于显示地将隐藏的日志句柄打开
,具体的实现原理可以翻看源码。
另外注意一点: 在解开注释之后test_logger.info("test_logger end")
这行的输出并没有用test_logger.info("test_logger start")
一样的格式,因为用户init_logger
配置的formatters
覆盖了之前的格式,这个是正常的。
- code
- 第二部分:
uvicorn
源码- site-packages/uvicorn/config.py 这个文件定义了uvicorn自带的日志配置
- site-packages/uvicorn/workers.py 日志实例化在这里, 这里的两个日志句柄输出框架的基本打印信息
用户init_logger
之后会覆盖掉之前的配置,又因为新的配置没有以上两个配置,遂logging
模块会将其的disabled置为True意为隐藏,想要继续输出需要显示的将其置为False
- site-packages/uvicorn/config.py 这个文件定义了uvicorn自带的日志配置
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgfijia
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01