programing

JSON 로그 파일을 쓰는 형식을 선택하십시오.

sourcejob 2023. 2. 8. 17:51
반응형

JSON 로그 파일을 쓰는 형식을 선택하십시오.

쓰기 및 파싱에 대한 형식 표준이 있습니까?JSON로그 파일?

문제는 '순수'를 가질 수 없다는 거야JSON일치하는 대괄호 및 후행 콤마가 필요하므로 로그 파일은 금지됩니다.따라서 다음 내용은 응용 프로그램에서 작성할 수 있지만 표준 구문 분석에서는 사용할 수 없습니다.JSON parsers:

[{date:'2012-01-01 02:00:01', severity:"ERROR", msg:"Foo failed"},
{date:'2012-01-01 02:04:02', severity:"INFO", msg:"Bar was successful"},
{date:'2012-01-01 02:10:12', severity:"DEBUG", msg:"Baz was notified"},

따라서 파서가 로그 파일을 처리할 수 있도록 로그 파일을 구성하는 방법에 대한 몇 가지 규칙이 있어야 합니다.가장 쉬운 것은 "한 줄에 하나의 로그 메시지 개체, 문자열 값의 새 행이 이스케이프됩니다."입니다.기존 표준 및 툴이 있습니까?

파일마다 하나의 JSON 개체를 쓰는 것이 아니라 LINE마다 하나의 JSON 개체를 쓰는 것입니다.그런 다음 각 행을 개별적으로 구문 분석할 수 있습니다.쉼표 후행과 오브젝트 세트 전체를 괄호 등으로 둘러싸는 것에 대해 걱정할 필요가 없습니다.이 기능의 상세한 것에 대하여는, http://blog.nodejs.org/2012/03/28/service-logging-in-json-with-bunyan/ 를 참조해 주세요.

또, Fluentd http://fluentd.org/ 를 참조해 주세요.사용하기 좋은 툴셋은 다음과 같습니다.

편집: 이 형식은 현재 JSONLines 또는jsonl아래 @Mnebuerquo가 지적한 바와 같이 http://jsonlines.org/를 참조하십시오.

보석.log_formatterrouby는 포메터 그룹으로서 루비 및 log4r의 json 포메터를 지원합니다.

루비라고 부르기 쉽죠

gem 'log_formatter'

require 'log_formatter'
require 'log_formatter/ruby_json_formatter'

logger.debug({data: "test data", author: 'chad'})

결과

{
  "source": "examples",
  "data": "test data",
  "author": "chad",
  "log_level": "DEBUG",
  "log_type": null,
  "log_app": "app",
  "log_timestamp": "2016-08-25T15:34:25+08:00"
}

log4r의 경우:

require 'log4r'
require 'log_formatter'
require 'log_formatter/log4r_json_formatter'

logger = Log4r::Logger.new('Log4RTest')
outputter = Log4r::StdoutOutputter.new(
  "console",
  :formatter => Log4r::JSONFormatter::Base.new
)
logger.add(outputter)

logger.debug( {data: "test data", author: 'chad'} )

고급 사용: README

완전한 예 코드:

언급URL : https://stackoverflow.com/questions/10699953/format-for-writing-a-json-log-file

반응형