성능에 대한 JSON 효과의 로그인


22

JSON 로그인에 대한 기사가 점점 더 많이 보입니다. NodeJS 블로그에서도 찾을 수 있습니다. 왜 모두가 그렇게 좋아합니까? 더 많은 작업이 관여하는 것을 볼 수 있습니다.

  • 몇 가지 새로운 객체가 생성됩니다.
  • 문자열 길이 또는 여러 문자열 할당 계산과 관련된 개체를 문자열 화합니다.
  • 만들어진 모든 쓰레기를 GCing.

JSON 로깅 및 일반 문자열 로깅을 사용할 때 성능에 대한 테스트가 있습니까? 사람들이 엔터프라이즈 프로젝트에서 JSON (로깅에)을 사용합니까?

답변:


36

JSON 로깅을 사용하면 형식 이 시간이 변경 되어도 프로그래밍 방식으로 로그 파일을 구문 분석 할 수 있습니다 .

좋은 예는 Apache 로그입니다. 기본적으로 Apache는 commonaccess.log에 형식을 사용 합니다.

"%h %l %u %t \"%r\" %>s %b"

해당 로그 파일 중 하나를 가져 와서 일부 통계를 계산하는 오프라인 파서를 작성했다고 가정하십시오.

어느 시점에서 응용 프로그램에 하위 도메인을 도입하고 virtual_host로그에 포함 시킵니다 (하위 도메인 중 하나에 문제가 발생하면 디버그 할 수 있습니다).

"%v %h %l %u %t \"%r\" %>s %b"

파서는를 사용하지 않지만 virtual_hosts다음과 같이 파서를 조정해야합니다.

  • 새 로그 형식을 승인하십시오 ( %v로그 형식의 맨 앞에 유의하십시오).
  • 여전히 이전 로그 형식을 지원합니다 (이전 로그 파일의 경우)

그러나 JSON에 로그인하면 파서 추가 필드를 보지 못하고 새 로그와 오래된 로그를 행복하게 구문 분석 할 수 있습니다. 그리고 다른 파서는 추가 된 필드 가 존재할 경우이를 사용할 수 있습니다 .

그리고 물론 당신을 위해 , JSON을 구문 분석하여 작성하는 것보다 쉽게 regexps구문 분석 문자열 로그에.


10
완벽한 예입니다.
Florian Margaine

27

기계가 한계에 너무 가깝게 작동하여 그러한 문제가 실제로 중요하다면, 더 심각한 문제가있을 수 있습니다. 이것이 약간의 차이를 만드는 예외적 인 상황이있을 수 있지만, JSON, 간단한 텍스트 또는 레코드를 데이터베이스에 기록하면 차이가 전혀 중요하지 않은 머신에서 많은 애플리케이션 (대부분)이 실행됩니다. 어쨌든 원시 바이너리를 로그하지 않는 한 객체, 문자열 및 기타 변환은 대부분의 경우 수행해야합니다 (데이터베이스에 쓰는 경우와 같이 백그라운드에서 처리하는 기본 클래스를 사용하기 때문에).

이를 위해 성능 평가가 필요한 경우 코드를 실행하려는 시스템과 매일 사용하는 프로그래밍 환경에서 직접 평가해야합니다. 오버 헤드가 크거나 전혀없는 경우 많은 것들에 달려 있습니다. 예를 들어 Ruby on Rails로 웹 사이트를 작성하는 경우 대부분의 경우 데이터는 해시이므로 내부 표현이 작성하려는 것과 크게 다르지 않기 때문에 JSON으로 변환하면 거의 비용이 들지 않습니다. Rails 코드가 이러한 객체와 데이터 구조를 항상 처리하도록).

장점은 도구에 따라 다릅니다. 라이브러리에 JSON이 내장되어 있으면 쉽게 읽고 읽을 수 있습니다. 다시 한 번 예를 들면 : 웹 사이트에 대한 관리자 인터페이스가 있고 JSON에 저장된 일부 로깅 정보를 표시하려는 경우 일부 경우 단일 코드 행에서 루비에서 HTML로 읽고 표시 할 수 있습니다.


1
나는 당신이 마이크로 초버리는 것에 대해별로 신경 쓰지 않을 것입니다 ...
Rhymoid

@Rhymoid 아니오, 나는 실제 문제를 해결하기 위해 시간을 사용하는 것을 선호합니다.
thorsten müller

3
@Rhymoid 마이크로 초를 버리는 것이 좋지 않은 상황이 있습니다. 또한 프로그래머의 99.9 %가 그렇지 않은 코드를 작성한다고 생각합니다. 예를 들어, 대부분의 웹 프레임 워크는 내가 필요로하는 것 이상을 수행하며 오버 헤드가 있습니다. 그러나 완전한 테스트 및 보안 제품군이 제공되므로 코드를 직접 작성하는 데 수백 시간이 절약됩니다. 우리 회사가 처음부터 새로 구축하는 데 드는 추가 비용으로 인해 필요한 경우 하드웨어의 두 배에 자금을 지원할 수 있습니다.
corsiKa
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.