문제

C ++에서 로그 서버를 구현하고 있습니다. 이는 Java 프로그램 (Log4J 소켓 appender를 통해)에서 로그 메시지를 허용합니다. C ++ 에서이 Java 로깅 객체를 어떻게 읽습니까?

도움이 되었습니까?

해결책

XML 형식 메시지를 보내도록 log4j appender를 구성해야합니다. 그런 다음 C ++에서 XML을 읽는 문제입니다.

다른 팁

직렬화 된 Java 객체는 Java 개체를 재구성하기 위해 Java 런타임의 메타 정보가 필요한 바이트 스트림입니다. 시스템에서 사용할 수있는 메타 정보가 없으면 해당 정보를 직접 추가해야합니다. 이는 지루하고 오류가 발생하기 쉽습니다. 두 번째로 XML을 대신 보내는 아이디어는 XML 직렬화가 발명 된 것입니다. :)

언어 공유의 또 다른 매우 빠른 방법은입니다 protobuf. 프로토 파일 (데이터 구조를 설명하는 메타 파일)은 다양한 대상 언어에 대한 IO 코드를 작성하는 PROTOC을 사용하여 컴파일됩니다.

내 앱에서 그것을 사용하고 있었고 몇 가지를했습니다 벤치마킹 그것이 당신의 목적에 도움이된다면 단서를 줄 수 있습니다. 내가 알고있는 유일한 단점은 Protobuf가 참조를 전혀 처리하지 않는다는 것입니다. 객체 중 하나에 동일한 객체가 두 번 포함 된 경우 이전 인스턴스 (Java 직렬화의 경우)를 참조하여 한 번만 대신 두 번 쓰여집니다.

원래 질문과 관련하여, 나는 직렬화 된 Java 개체의 읽기와 쓰기가 너무 어렵고 오류가 발생할 것이라고 Thorbjørn에 동의합니다.

Protobuf 방식으로가는 것을 고려하면 자유롭게 사용하십시오. 이 로깅 이벤트 프로토 비프 파일 스타터로.

JSON은 이런 종류의 문제를 해결하는 가장 좋은 방법입니다.

log4cxx는 c ++의 log4j 포트입니다. 아마도 그 아이디어를 얻거나 직접 사용할 수 있습니까?

json! json! json! json!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top