답변:
JSON 로깅을 사용하면 형식 이 시간이 변경 되어도 프로그래밍 방식으로 로그 파일을 구문 분석 할 수 있습니다 .
좋은 예는 Apache 로그입니다. 기본적으로 Apache는 common
access.log에 형식을 사용 합니다.
"%h %l %u %t \"%r\" %>s %b"
해당 로그 파일 중 하나를 가져 와서 일부 통계를 계산하는 오프라인 파서를 작성했다고 가정하십시오.
어느 시점에서 응용 프로그램에 하위 도메인을 도입하고 virtual_host
로그에 포함 시킵니다 (하위 도메인 중 하나에 문제가 발생하면 디버그 할 수 있습니다).
"%v %h %l %u %t \"%r\" %>s %b"
파서는를 사용하지 않지만 virtual_hosts
다음과 같이 파서를 조정해야합니다.
%v
로그 형식의 맨 앞에 유의하십시오).그러나 JSON에 로그인하면 파서 는 추가 필드를 보지 못하고 새 로그와 오래된 로그를 행복하게 구문 분석 할 수 있습니다. 그리고 다른 파서는 추가 된 필드 가 존재할 경우이를 사용할 수 있습니다 .
그리고 물론 당신을 위해 , JSON을 구문 분석하여 작성하는 것보다 쉽게 regexps
구문 분석 문자열 로그에.
기계가 한계에 너무 가깝게 작동하여 그러한 문제가 실제로 중요하다면, 더 심각한 문제가있을 수 있습니다. 이것이 약간의 차이를 만드는 예외적 인 상황이있을 수 있지만, JSON, 간단한 텍스트 또는 레코드를 데이터베이스에 기록하면 차이가 전혀 중요하지 않은 머신에서 많은 애플리케이션 (대부분)이 실행됩니다. 어쨌든 원시 바이너리를 로그하지 않는 한 객체, 문자열 및 기타 변환은 대부분의 경우 수행해야합니다 (데이터베이스에 쓰는 경우와 같이 백그라운드에서 처리하는 기본 클래스를 사용하기 때문에).
이를 위해 성능 평가가 필요한 경우 코드를 실행하려는 시스템과 매일 사용하는 프로그래밍 환경에서 직접 평가해야합니다. 오버 헤드가 크거나 전혀없는 경우 많은 것들에 달려 있습니다. 예를 들어 Ruby on Rails로 웹 사이트를 작성하는 경우 대부분의 경우 데이터는 해시이므로 내부 표현이 작성하려는 것과 크게 다르지 않기 때문에 JSON으로 변환하면 거의 비용이 들지 않습니다. Rails 코드가 이러한 객체와 데이터 구조를 항상 처리하도록).
장점은 도구에 따라 다릅니다. 라이브러리에 JSON이 내장되어 있으면 쉽게 읽고 읽을 수 있습니다. 다시 한 번 예를 들면 : 웹 사이트에 대한 관리자 인터페이스가 있고 JSON에 저장된 일부 로깅 정보를 표시하려는 경우 일부 경우 단일 코드 행에서 루비에서 HTML로 읽고 표시 할 수 있습니다.