pdcomm::modbus::DiagnosticLogging
클래스
Modbus 라이브러리의 선택형 JSON Lines 진단 로그(diagnostic log)를 설정, 조회, 플러시하는 정적 함수 모음입니다.
class DiagnosticLogging로깅은 기본적으로 꺼져 있습니다. 모든 함수는 스레드 안전(thread-safe)합니다.
명령 하나의 앞뒤로 디버그 로깅을 켰다가 끄는 예입니다(examples/diagnostics/modbus/logging.cpp).
pdcomm::modbus::DiagnosticLogging::configure(argv[1]);
pdcomm::modbus::Endpoint endpoint;
std::cout << endpoint.call(R"({"action":"execute","pdu":[6,0,0,0,42]})") << '\n';
pdcomm::modbus::DiagnosticLogging::flush();
std::cout << pdcomm::modbus::DiagnosticLogging::status() << '\n';
pdcomm::modbus::DiagnosticLogging::configure(R"({"enabled":false})");멤버
configure
메서드
로깅 설정을 적용합니다.
static void configure(const std::string &json)매개변수
| 이름 | 설명 |
|---|---|
json | 선택 멤버 enabled, level, file, max_bytes, files, forensics를 담은 UTF-8 JSON 객체입니다. 각 멤버는 pdcomm_modbus_logging_configure()에 설명된 대로입니다. 예: {"level":"debug","file":"modbus.jsonl"}. |
참고
- 예외
std::runtime_error: 설정이 비어 있거나, 잘못되었거나, 16384바이트보다 크거나, 로그 파일을 열 수 없으면 발생합니다. 이전 설정이 계속 적용됩니다.
flush
메서드
큐에 있는 레코드가 기록될 때까지 최대 2초 동안 기다립니다.
static void flush()참고
- 예외
std::runtime_error: 플러시를 큐에 넣을 수 없거나, 2초 안에 확인되지 않거나, 쓰기가 실패하면 발생합니다.
status
메서드
로깅 상태를 JSON으로 반환합니다.
static std::string status()반환값
현재 적용된 설정과 written, dropped, write_errors, configuration_errors 카운터를 담은 상태 JSON입니다.
참고
- 예외
std::runtime_error: 상태를 읽을 수 없으면 발생합니다. 상태가 이 함수가 사용하는 4096바이트 버퍼보다 긴 경우도 포함합니다.