如何使用Libwebsockets启用调试日志记录?
我想实现一个websocket客户端(在C中libwebsockets)。我使用cmake来控制软件编译过程。如何使用Libwebsockets启用调试日志记录?
我的问题很简单:如何使用Libwebsockets启用调试日志记录?
首先我编译和喜欢它的文档注中说,安装libwebsockets关于建立LWS:
要建立与调试信息和_DEBUG用于编译优先级较低的调试消息 ,使用
$ cmake的.. -DCMAKE_BUILD_TYPE = DEBUG
从Libwebsock ETS 2.1文档有关与LWS (https://libwebsockets.org/lws-api-doc-master/html/md_README.coding.html)编码注:
调试日志
而且使用lws_set_log_level API,您可以提供一个自定义的回调 实际发出的日志字符串。默认情况下,这指向发送到stderr的内部 emit函数。将其设置为NULL会使其保留为 。
帮助函数lwsl_emit_syslog()从库中导出到 简化了对syslog的记录。您仍然需要在用户代码中使用setlogmask,openlog 和closelog。
日志apis可用于用户代码。
lwsl_err(...)lwsl_warn(...)lwsl_notice(...)lwsl_info(...) lwsl_debug(...)的通知和信息之间的区别是,通知 会被默认记录而信息在默认情况下被忽略。
如果你不定义_DEBUG,即在建筑,没有这个
$ cmake的.. -DCMAKE_BUILD_TYPE =然后调试日志下面通知水平并没有 真正得到编译英寸
像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客户端似乎确定。
但我没有调试日志...我错过了什么?
韩国社交协会的LWS-队在Github上:
调试的生成类型被 构建过程中去除停止更详细的日志记录类型。
你仍然需要使用位图在运行时,使他们在 lws_set_log_level()...... 默认为7(ERR /警告/通知)
我误解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 */
};
就像安迪说,默认为,所以7 ...