2017-03-01 55 views
1

私はwebsocketクライアントを実装しようとしています(C言語でlibwebsocketsを使用)。私はcmakeを使ってソフトウェアのコンパイルプロセスを制御しています。Libwebsocketsでデバッグログを有効にする方法は?

私の質問は簡単です:Libwebsocketsでデバッグログを有効にする方法は?

それはマニュアルにノートを言ったようにまず私はLWSの構築についてlibwebsocketsをコンパイルしてインストール:

を使用し、中にコンパイルされ、優先度の低いデバッグメッセージ のためのデバッグ情報および_DEBUGをビルドするには

$ cmakeの。.. -DCMAKE_BUILD_TYPE = LibwebsockからDEBUG

また、ログ文字列を発する実際 にカスタムコールバックを提供することができるlws_set_log_level APIを使用して

ロギング

デバッグ:ETS LWS (https://libwebsockets.org/lws-api-doc-master/html/md_README.coding.html)でコーディング約2.1 DOC ノート。デフォルトでは、これはstderrに送信する内部関数 emitを指しています。 NULLに設定すると、代わりに のままになります。

ヘルパー関数lwsl_emit_syslog()はライブラリから にエクスポートされ、syslogへのロギングが簡単になります。あなたはまだsetlogmask、openlog とあなたのユーザコードでcloselogを使用する必要があります。

ロギングAPIは、ユーザコードで使用できるようになりました。 lwsl_info

lwsl_err(...)lwsl_warn(...)lwsl_notice(...)(...) lwsl_debug(...)通知と情報との違いは、デフォルトではログに記録されますことに注意してください ですinfoはデフォルトでは無視されます。

あなたがこの

$ cmakeの。.. -DCMAKE_BUILD_TYPE = DEBUGが、その後予告以下のレベルを記録 実際にはコンパイルされません。

などがなく、すなわち定義され_DEBUG、で構築されていない場合this (official) example、私はlws_set_log_level(10, NULL);を私のwebsocket main関数の先頭に入れました。

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クライアントは大丈夫そうです。

しかし、デバッグログはありません...何が欠けていますか?Githubの上LWS-チーム

答えて

1

TKS:

DEBUGのビルドタイプは、ビルド時に除去 であることから、より詳細なログの種類を停止します。あなたはまだ( 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 ...

で、言ったように
関連する問題