我正在尝试实现websocket客户端(使用C中的libwebsockets )。我用cmake来控制软件编译过程。
我的问题很简单:如何使用Libwebsockets启用调试日志记录?
首先,我编译并安装了libwebsocket,如关于构建lws的文档说明中所述:
中编译的低优先级调试消息,若要使用调试信息和_DEBUG进行编译,请使用 钱..。-DCMAKE_BUILD_TYPE=DEBUG
来自LibwebSocket2.1文档关于使用lws (README.coding.html)编码的说明:
调试测井 此外,使用lws_set_log_level api,您可以提供一个自定义回调以实际发出日志字符串。默认情况下,这指向发送到stderr的内部emit函数。将其设置为NULL,则保持原样。 帮助函数lwsl_emit_syslog()从库中导出,以简化登录到syslog。您仍然需要在用户代码中使用setlog掩码、openlog和closelog。 日志apis可用于用户代码。 Lwsl_err(.)Lwsl_warn(.)Lwsl_notice(.)Lwsl_info(.)Lwsl_debug(.)通知和信息之间的区别是,默认情况下通知将被记录,而信息在默认情况下被忽略。 如果您没有使用_DEBUG定义的构建,即没有此定义 钱..。然后,下面的-DCMAKE_BUILD_TYPE=DEBUG日志级别实际上不会在其中编译。
和这个(官方)例子一样,我把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客户端看起来很好。
但我没有调试日志..。我错过了什么?
发布于 2017-03-28 10:09:11
Tks到 lws-team on Github :
生成类型的调试将在生成期间停止删除更详细的日志类型。 您仍然需要在运行时使用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.
https://stackoverflow.com/questions/42535181
复制相似问题