2017-03-01 13 views
1

websocket 클라이언트 (C에서 libwebsockets 사용)를 구현하려고합니다. cmake를 사용하여 소프트웨어 컴파일 프로세스를 제어하고 있습니다.Libwebsockets로 디버그 로깅을 활성화하는 방법은 무엇입니까?

내 질문에 간단합니다 : 어떻게 Libwebsockets와 디버그 로깅을 활성화하려면?

우선 컴파일하고 문서 주에 말했듯이 libwebsockets를 설치 LWS 구축에 대한 :

는, 컴파일 우선 순위가 낮은 디버그 메시지 에 대한 디버그 정보 및 _DEBUG 빌드 사용하려면

$ cmake .. -DCMAKE_BUILD_TYPE = Libwebsock에서 DEBUG

디버그 로깅

는 또한 실제로 로그 문자열을 방출 당신이 에 사용자 정의 콜백을 제공 할 수 lws_set_log_level API를 사용하여 : LWS (https://libwebsockets.org/lws-api-doc-master/html/md_README.coding.html) 코딩에 대한 ETS 2.1
문서 노트. 기본적으로 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, 내 websocket 주요 기능의 시작 부분에 lws_set_log_level(10, NULL); 넣어.

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 

모든 것이 잘 작동, 내 웹 소켓 클라이언트가 좋아 보인다.

하지만 디버그 로그가 없습니다 ... 무엇이 없습니까?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 ...

입니다 말했다