2009-11-19 2 views
2

오랜 기간 동안 로깅을 한 후에는 로그 파일을 "전송 매체"로 사용하여 장기간 목표를 설정하여 로그 파일을 후 처리 할 수 ​​있어야하는 시점에 도달했습니다. al. 그래서 백엔드 요청을 재생할 수 있습니다. 그렇게하기 위해서는 객체를 로그 가능한 형태로 유지해야합니다.slf4j/log4j/java.util.logging을 사용하여 어떻게 바이너리 나 XML을 로깅 할 수 있습니까?

Sun에서이 작업을 수행하는 데 권장되는 방법은 java.beans.XMLEncoder를 사용하여 나에게 맞는 XML 스 니펫을 만드는 것이지만 문제는 XML 스 니펫을 사용하여 UTF-8로 인코딩 된 OutputStream으로 전송된다는 것입니다. UTF-8 헤더 및 OutputStream은 바이트 지향적입니다. 로그 파일은 문자 지향 (문자열)이며 로그 파일은 일반적으로 해당 플랫폼의 기본 인코딩으로 인코딩됩니다. XML에는 유니 코드 문자가 포함될 수 있습니다.

사람이 읽을 수있는 파일을 생성하는 접근 방식을 선호하면서이를 처리 할 강력한 방법이 필요합니다.

XML OuptutStream을 String으로 변환하고, 사용할 수없는 헤더를 제거하고, 숫자 엔터티로 인코딩 된 비 ASCII 문자로 ASCII로 병합하는 것에 대해 생각해 보았습니다. 또한 XML 변환을 사용하려고 생각했지만 로거가 필요로하는 것보다 많은 리소스가 필요하다고 느끼고 있습니다.

제안 사항?

+0

백엔드와 이야기 할 때 어떤 프로토콜을 사용합니까? –

+0

JDBC 또는 유사하지 않은 벤더 특정 프로토콜. –

답변

2

실제 답변보다 힌트가 많습니다 : logback-dev 메일 링리스트에서 특히 this thread을보고 특히 Joern Huxhorn (저자 : Lilith)의 메시지를 살펴보십시오. 더 일반적으로, 나는 같은 저자 인 Ceki Gülcü의 log4j의 "후계자"인 logback을 봐야한다고 생각한다. 이것은 내 생각에 일이 일어나는 곳입니다.

+0

감사합니다. 이것은 Jörn이 나를 추천 한 것입니다 (하지만 분명히 일어났습니다.). 결론은 현재 대부분의 백엔드에서 바이너리 데이터에 대한 적절한 지원이 없다는 것입니다. –

관련 문제