python-3.x - 在 Python 中动态设置 Sanic 日志级别
问题描述
我在我的 Sanic 应用程序中公开了一条路由,以根据客户端调用设置日志级别。例如
from sanic.log import logger, logging
@route("/main")
async def sanic_main(request):
logger.info("Info mesg")
logger.debug("Debug mesg")
return json("processed")
@route("/setlevel")
async def setlevel(request):
level = request.json["level"]
if level == "info":
loglevel = logging.INFO
elif level == "debug":
loglevel = logging.DEBUG
logger.setLevel(loglevel)
return json("done")
然而,在 DEBUG 和 INFO 之间设置日志级别时,我观察到 DEBUG 消息(来自“/main”)仅打印几次的异常行为,反之亦然。
注意:我正在运行多个 Sanic 工人
我应该如何动态设置日志级别?
解决方案
我从来没有做过这样的事情,但这sanic.log.logger
只是<class 'logging.Logger'>
. 所以,使用setLevel
应该没问题。
问题是您如何运行您的应用程序,以及您使用了多少工作人员?如果您处于有多个进程的情况,那么 using/setlevel
只会更改该进程的记录器。
推荐阅读
- node.js - 在 `vue create` 过程中遇到这些错误信息是否正常?
- java - 通过会话 id cookie 而不是 JWT 连接到 Android 上的 REST API
- mongodb - Mongodb子文档数组查找子文档数组
- django - Django模板过滤器将字符串转换为单项列表
- python - Python 提取数据
- unity3d - 如何消除 3D 统一运动中的滑行?
- android - 如何在用户与活动交互时连续获取 GPS 位置并基于此更改 UI?
- c# - 带有用户凭据提示的 MVC Windows 身份验证
- c++ - 模板模板参数中的 C++ 未声明标识符
- ios - 如何在 Xcode 11 iOS 13 上查看 NSLog?