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)매개변수
| 이름 | 설명 |
|---|---|
options | JsonSerializer로 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예외: 라이브러리가 상태를 보고하지 못했습니다.