【问题标题】:How to enable debug logging with Libwebsockets?如何使用 Libwebsockets 启用调试日志记录?
【发布时间】:2017-03-28 22:38:44
【问题描述】:

我正在尝试实现一个 websocket 客户端(在 C 中使用 libwebsockets)。我正在使用 cmake 来控制软件编译过程。

我的问题很简单:如何使用 Libwebsockets 启用调试日志记录?

首先我像文档中所说的那样编译并安装了 libwebsockets 关于构建 lws 的注意事项

使用调试信息和 _DEBUG 构建低优先级调试消息 编译进去,使用

$ cmake .. -DCMAKE_BUILD_TYPE=DEBUG

来自 Libwebsockets 2.1 doc 关于使用 lws 编码的注意事项 (https://libwebsockets.org/lws-api-doc-master/html/md_README.coding.html) :

调试日志

您还可以使用 lws_set_log_level api 提供自定义回调 实际上发出日志字符串。默认情况下,这指向一个内部 发出发送到 stderr 的函数。将其设置为 NULL 使其保持原样 而是。

帮助函数 lwsl_emit_syslog() 从库中导出到 简化到 syslog 的日志记录。你仍然需要使用setlogmask,openlog 并关闭您的用户代码。

日志 API 可用于用户代码。

lwsl_err(...) lwsl_warn(...) lwsl_notice(...) lwsl_info(...) lwsl_debug(...) notice 和 info 的区别在于,notice 默认会被记录,而 info 默认会被忽略。

如果你没有定义_DEBUG,即没有这个

$ cmake .. -DCMAKE_BUILD_TYPE=DEBUG 然后日志级别低于通知 实际上并没有被编译进去。

就像this (official) example 一样,我把lws_set_log_level(10, NULL); 放在我的websocket 主函数的开头。

CMakeLists.txt:

cmake_minimum_required(VERSION 3.6)
project(foo)
set(CMAKE_C_STANDARD 11)
set(CMAKE_BUILD_TYPE DEBUG) #For CLion IDE but i'm pretty sur it does nothing.

set(SOURCE_FILES
        websocket.c
        websocket.h
        main.c)

add_executable(foo ${SOURCE_FILES})
target_link_libraries(foo websockets)

然后我运行 cmake :

cmake .. -DCMAKE_BUILD_TYPE=DEBUG
make

一切正常,我的 websocket 客户端似乎没问题。

但我没有调试日志...我错过了什么?

【问题讨论】:

    标签: c debugging cmake libwebsockets


    【解决方案1】:

    感谢 Github 上的 lws-team

    DEBUG 的构建类型阻止了更详细的日志记录类型 在构建期间删除。

    您仍然需要在运行时使用位图在 lws_set_log_level()... 默认为 7(错误/警告/通知)

    我误读了 libwebsockets.h :

        enum lws_log_levels {
        LLL_ERR = 1 << 0,
        LLL_WARN = 1 << 1,
        LLL_NOTICE = 1 << 2,
        LLL_INFO = 1 << 3,
        LLL_DEBUG = 1 << 4,
        LLL_PARSER = 1 << 5,
        LLL_HEADER = 1 << 6,
        LLL_EXT = 1 << 7,
        LLL_CLIENT = 1 << 8,
        LLL_LATENCY = 1 << 9,
        LLL_USER = 1 << 10,
    
        LLL_COUNT = 11 /* set to count of valid flags */
    };
    

    就像安迪说的,默认是0000 0111,所以7...

    【讨论】:

      猜你喜欢
      • 2014-11-02
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2016-12-06
      • 1970-01-01
      • 1970-01-01
      • 2014-02-28
      • 2016-08-12
      相关资源
      最近更新 更多