如何增大Python Websockets日志消息长度阈值以查看完整内容?
Websockets日志输出长度限制调整方法
可以增大这个阈值,70字符的截断是websockets库默认的日志格式化行为导致的,下面是两种可行的解决方式:
方案一:自定义日志格式化器(推荐)
websockets内部使用了自定义的日志格式化类,我们可以继承该类并修改截断长度,这种方式不会影响其他项目配置,也不用担心库升级后修改失效。
修改后的Server.py代码:
#!/usr/bin/env python import logging import asyncio from websockets.server import serve from websockets.logging import TextFormatter # 自定义格式化器,将max_length设置为你需要的长度,设为0则完全不截断 class CustomLogFormatter(TextFormatter): def format_message(self, message: str) -> str: max_length = 500 # 这里设置目标最大字符长度 if max_length <= 0 or len(message) <= max_length: return message return message[:max_length - 3] + "..." async def echo(websocket): async for message in websocket: await websocket.send(message) async def main(): # 替换websockets的默认日志处理器 ws_logger = logging.getLogger("websockets") # 先移除原有处理器 for handler in ws_logger.handlers.copy(): ws_logger.removeHandler(handler) # 添加自定义处理器 handler = logging.StreamHandler() handler.setFormatter(CustomLogFormatter("%(asctime)s %(message)s")) ws_logger.addHandler(handler) ws_logger.setLevel(logging.DEBUG) async with serve(echo, "127.0.0.1", 9954): await asyncio.Future() asyncio.run(main())
方案二:修改websockets源码(不推荐)
直接找到Python环境中websockets库的logging.py文件,定位到TextFormatter类的format_message方法,把默认的截断长度(通常为70)改成你需要的值。但这种方法的问题是,一旦升级websockets库,修改会被覆盖,且会影响所有使用该库的项目,非必要不建议使用。
测试效果
修改后运行原有的Server.py和Client.py,日志中的消息就会按照你设置的长度显示,不会再被截断为70字符加...。
内容的提问来源于stack exchange,提问作者sialor
相关产品推荐
相关产品推荐

