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

pdcomm::modbus::DiagnosticLogging

클래스

Modbus 라이브러리의 선택형 JSON Lines 진단 로그(diagnostic log)를 설정, 조회, 플러시하는 정적 함수 모음입니다.

class DiagnosticLogging

선언 위치: #include <pdcomm/modbus/pdcomm_modbus_logging.hpp>

로깅은 기본적으로 꺼져 있습니다. 모든 함수는 스레드 안전(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)

선언 위치: #include <pdcomm/modbus/pdcomm_modbus_logging.hpp>

매개변수

이름설명
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()

선언 위치: #include <pdcomm/modbus/pdcomm_modbus_logging.hpp>

참고

  • 예외 std::runtime_error: 플러시를 큐에 넣을 수 없거나, 2초 안에 확인되지 않거나, 쓰기가 실패하면 발생합니다.

status

메서드

로깅 상태를 JSON으로 반환합니다.

static std::string status()

선언 위치: #include <pdcomm/modbus/pdcomm_modbus_logging.hpp>

반환값

현재 적용된 설정과 written, dropped, write_errors, configuration_errors 카운터를 담은 상태 JSON입니다.

참고

  • 예외 std::runtime_error: 상태를 읽을 수 없으면 발생합니다. 상태가 이 함수가 사용하는 4096바이트 버퍼보다 긴 경우도 포함합니다.