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

如何禁用Socket.IO C++客户端连接不可达时的错误日志?

问题

使用socket.io C++客户端时,若服务器不可达,控制台会持续输出以下日志:

[2024-08-27 18:25:18] [error] handle_connect error: Connection refused
[2024-08-27 18:25:19] [info] asio async_connect error: asio.system:111 (Connection refused)
[2024-08-27 18:25:19] [info] Error getting remote endpoint: asio.system:107 (Transport endpoint is not connected)

已尝试以下两种方法,但均无法屏蔽日志:

  • 调用客户端API:client.set_logs_quiet()
  • 编译源码时添加编译参数:CXXFLAGS+="-DSIO_DISABLE_LOGGING"
解决方案

这些日志来自socket.io客户端依赖的Asio底层网络库,而非socket.io客户端自身的日志系统,因此之前的方法无效。可通过以下方式处理:

1. 编译时禁用Asio日志

从源码编译Asio和socket.io-client-cpp时,添加Asio的日志禁用宏:

CXXFLAGS+="-DASIO_DISABLE_LOGGING"

重新编译后,Asio相关的日志会被完全屏蔽。

2. 自定义Asio日志回调(无需重新编译)

通过设置Asio的全局日志回调,将日志输出指向空函数,示例代码:

#include <asio.hpp>

// 空日志处理函数,忽略所有日志
void empty_log_handler(const std::string&) {}

int main() {
    // 替换Asio默认的日志回调
    asio::set_logging_handler(empty_log_handler);

    // 初始化并使用socket.io客户端
    socketio::client client;
    // ... 后续客户端操作代码
}

3. 升级客户端版本

部分旧版socket.io-client-cpp存在SIO_DISABLE_LOGGING宏不生效的问题,建议升级到最新稳定版本后,再结合上述方法尝试。

内容的提问来源于stack exchange,提问作者falero80s

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 03:42:12