2017-03-01 108 views
1

我想實現一個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客戶端似乎確定。

但我沒有調試日誌...我錯過了什麼?

回答

1

韓國社交協會的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 ...

相關問題