콘텐츠로 이동
무료 평가 시작

pdcomm_logging_configure

함수

라이브러리 내부의 진단 로깅을 구성합니다.

PdcommStatus pdcomm_logging_configure(const uint8_t *input, size_t size)

선언 위치: #include <pdcomm.h>

로깅은 기본적으로 꺼져 있습니다. 로깅을 켜면 pdcomm-log라는 이름의 백그라운드 스레드 하나가 레코드를 JSON Lines 형식(한 줄에 JSON 객체 하나)으로 표준 오류나 크기 기준으로 순환하는 파일에 기록합니다. 프로토콜 코드는 로깅 때문에 블로킹되지 않습니다. 크기가 제한된 큐에 들어가지 못한 레코드는 버리고 pdcomm_logging_status()에 개수를 집계합니다.

input은 NUL로 끝나지 않는 UTF-8 JSON 객체이며, 다음 멤버를 선택적으로 가집니다(알 수 없는 멤버는 거부합니다).

  • enabled(불리언, 기본값 true): false이면 로깅을 끕니다.
  • level(문자열, 기본값 "info"): "error", "warn", "info", "debug", "trace" 중 하나입니다.
  • file(비어 있지 않은 문자열 또는 null, 기본값 null): 로그 파일 경로입니다. null이면 표준 오류에 기록합니다.
  • max_bytes(정수, 기본값 10485760): 순환 기준 크기이며 8192바이트부터 1073741824바이트까지입니다.
  • files(정수, 기본값 3): 보관할 파일 수이며 1부터 16까지입니다.
  • forensics(불리언, 기본값 false): 주기적인 프로세스 샘플을 추가합니다. 로깅이 켜져 있는 동안에는 수준이 "debug" 또는 "trace"여야 합니다.

이 호출은 로깅 스레드가 새 구성을 적용할 때까지 최대 2초 동안 기다립니다.

매개변수

이름설명
inputJSON 객체 바이트입니다. NULL이 아니어야 합니다.
sizeinput의 바이트 수이며 1부터 16384까지입니다.

반환값

구성을 적용하면 #PDCOMM_OK를 반환합니다. input이 NULL이거나, size가 0이거나 16384보다 크거나, JSON이 잘못되었거나 범위를 벗어났거나, 싱크(sink)를 열 수 없거나, 로깅 스레드가 2초 안에 구성을 적용하지 못하면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 패닉(panic)을 격리했으면 #PDCOMM_INTERNAL_ERROR를 반환합니다.

참고

  • 스레드 안전성: 어느 스레드에서나 호출할 수 있습니다. 로깅 상태는 프로세스 전체에 적용되며 모든 엔드포인트가 공유합니다.
  • 처음 사용하기 전에 환경 변수 PDCOMM_LOG가 off가 아닌 수준으로 설정되어 있으면, 라이브러리는 그 수준으로 로깅을 켜고 PDCOMM_LOG_FILE, PDCOMM_LOG_MAX_BYTES, PDCOMM_LOG_FILES, PDCOMM_LOG_FORENSICS를 읽습니다. 이후 이 함수를 호출하면 그 구성을 대체합니다.
  • 호출이 반환된 뒤에는 어떤 포인터도 보관하지 않습니다.