You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何增大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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 19:57:49