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

PDComm.DiagnosticLogging

클래스

PDComm SECS/GEM 네이티브 라이브러리의 선택형 진단 로그를 제어합니다.

public static class DiagnosticLogging

로깅은 기본적으로 꺼져 있습니다. 로깅을 켜면 라이브러리가 JSON Lines 레코드를 비동기로 파일에 기록하거나(크기 기반 회전 적용) 표준 오류에 기록합니다. 설정은 끝점 하나가 아니라 로드된 라이브러리 전체에 적용됩니다. 로그는 프로토콜 작업을 차단하지 않습니다. 큐에 넣지 못한 레코드는 버려지고 DiagnosticLogging.Status에 개수가 집계됩니다.

네이티브 라이브러리는 시작 전에 PDCOMM_LOG, PDCOMM_LOG_FILE, PDCOMM_LOG_MAX_BYTES, PDCOMM_LOG_FILES, PDCOMM_LOG_FORENSICS 환경 변수로도 구성할 수 있습니다.

PDComm.PdcommRuntime.Initialize(args[0]);
PDComm.DiagnosticLogging.Configure(new { enabled = true, level = "debug", file = args[1] });
using (var buffer = PDComm.PdcommBuffer.Create(new byte[] { 1, 2, 3 }, 1024)) { }
PDComm.DiagnosticLogging.Flush();
Console.WriteLine(PDComm.DiagnosticLogging.Status());
PDComm.DiagnosticLogging.Configure(new { enabled = false });

멤버

Configure

메서드

진단 로그 구성을 교체합니다.

public static void Configure(object options)

매개변수

이름설명
optionsJsonSerializer로 JSON 객체에 직렬화되는 객체입니다. 따라서 익명 형식처럼 정확한 소문자 이름을 사용해야 합니다. 인식하는 속성은 enabled(bool, 기본값 true), level(error, warn, info, debug, trace 중 하나, 기본값 info), file(경로, 또는 표준 오류이면 null), max_bytes(회전 크기, 기본값 10MiB), files(보관할 회전 파일 수, 1~16, 기본값 3), forensics(bool, debug 또는 trace가 필요)입니다. 알 수 없는 속성은 거부됩니다.

참고

  • NotSupportedException 예외: 로드된 네이티브 라이브러리가 로깅 API를 내보내지 않습니다.
  • InvalidOperationException 예외: 라이브러리가 구성을 거부했습니다. 예를 들어 알 수 없는 속성, 잘못된 수준이나 한도, 열 수 없는 로그 파일이 원인입니다.

Flush

메서드

큐에 쌓인 로그 레코드가 모두 기록될 때까지 기다립니다.

public static void Flush()

참고

  • NotSupportedException 예외: 로드된 네이티브 라이브러리가 로깅 API를 내보내지 않습니다.
  • InvalidOperationException 예외: 기록기가 라이브러리의 대기 한도인 약 2초 안에 플러시를 확인하지 않았거나 쓰기 실패를 보고했습니다.

Status

메서드

현재 로깅 상태와 카운터를 가져옵니다.

public static JsonElement Status()

반환값

enabled, level_name, sink, written, dropped, write_errors, configuration_errors 같은 필드가 있는 JSON 객체입니다.

참고

  • NotSupportedException 예외: 로드된 네이티브 라이브러리가 로깅 API를 내보내지 않습니다.
  • InvalidOperationException 예외: 라이브러리가 상태를 보고하지 못했습니다.