LogTape 0.11.0 릴리스 노트

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub

LogTape는 모든 런타임에서 작동하는 JavaScript와 TypeScript를 위한 의존성 없는 로깅 라이브러리입니다.

LogTape 0.11.0 릴리스를 발표하게 되어 기쁩니다. 이번 버전은 구조화된 로깅 기능을 크게 향상시키고 더 나은 로그 처리를 위한 새로운 JSON Lines 포맷터를 추가했습니다.

새로운 기능 및 개선사항

향상된 구조화 로깅

LogTape 0.11.0은 구조화 로깅에 주요 개선사항을 도입하여 로그에서 구조화된 데이터를 더 쉽고 유연하게 작업할 수 있게 했습니다.

직접 객체 로깅

이제 모든 로그 메서드의 첫 번째 인수로 객체를 전달하여 구조화된 데이터를 직접 로깅할 수 있습니다:

logger.info({
  userId: 123456,
  username: "johndoe",
  loginTime: new Date(),
});

이렇게 하면 객체 속성을 구조화된 필드로 포함하는 로그 항목이 생성되어 로그를 기계가 더 쉽게 읽고 검색할 수 있게 됩니다.

{*}를 사용한 범용 속성 보간

새로운 특수 플레이스홀더 {*}를 사용하면 구조화된 데이터의 모든 속성을 한 번에 보간할 수 있습니다:

logger.info("User logged in with properties {*}", {
  userId: 123456,
  username: "johndoe",
  loginTime: new Date(),
});

이는 메시지 템플릿에서 각 속성을 명시적으로 지정하지 않고도 사용 가능한 모든 컨텍스트를 포함하고자 할 때 특히 유용합니다.

간소화된 로깅 메서드

모든 로깅 메서드(debug, info, warn, error, fatal)는 이제 {*} 플레이스홀더를 사용한 구조화 로깅을 위한 편리한 단축 표현으로 객체 우선 구문을 지원합니다.

JSON Lines 포맷터

LogTape는 이제 현대 애플리케이션의 구조화된 로깅에 인기 있는 선택인 JSON Lines(JSONL 또는 NDJSON이라고도 함) 형식에 대한 내장 지원을 포함합니다:

import { jsonLinesFormatter } from "@logtape/logtape";
import { getFileSink } from "@logtape/file";

await configure({
  sinks: {
    jsonl: getFileSink("app.jsonl", {
      formatter: jsonLinesFormatter
    }),
  },
  // ... 나머지 구성
});

JSON Lines 포맷터는 각 로그 레코드를 별도의 줄에 JSON 객체로 출력하여 로그 집계 시스템 및 분석 도구에 이상적입니다.

사용자 정의 가능한 JSON Lines 옵션

새로운 getJsonLinesFormatter() 함수는 여러 사용자 정의 옵션을 제공합니다:

  • 카테고리 구분자: 계층적 카테고리가 결합되는 방식 제어
  • 메시지 형식: 원시 템플릿과 렌더링된 메시지 중에서 선택
  • 속성 처리: 속성을 평면화하거나, 중첩하거나, 사용자 정의 접두사를 붙일 수 있음

이전 버전과의 호환성

기존의 모든 로깅 패턴은 이전과 정확히 동일하게 작동합니다. 새로운 기능들은 추가적인 것이며 기존 코드를 손상시키지 않습니다.

이것이 중요한 이유

이러한 개선 사항들은 LogTape를 현대 애플리케이션 로깅에 더욱 강력하게 만듭니다:

  • 더 나은 관찰 가능성: 구조화된 데이터로 로그를 더 쉽게 검색하고 분석할 수 있습니다
  • 개선된 개발자 경험: 복잡한 객체를 로깅할 때 상용구 코드가 줄어듭니다
  • 산업 표준 형식: 로그 관리 시스템과의 더 나은 통합을 위한 JSON Lines 지원
  • 유연한 포맷팅: 인프라 요구 사항에 맞게 출력을 사용자 정의할 수 있습니다

설치

LogTape 0.11.0은 JSRnpm 모두에서 사용 가능합니다:

deno add jsr:@logtape/logtape@0.11.0
npm  add     @logtape/logtape@0.11.0
pnpm add     @logtape/logtape@0.11.0
yarn add     @logtape/logtape@0.11.0
bun  add     @logtape/logtape@0.11.0

더 알아보기

이러한 새로운 기능들이 여러분의 로깅 경험을 향상시키기를 바랍니다. 항상 그렇듯이, LogTape는 의존성이 없으며 모든 JavaScript 런타임에서 작동합니다.

행복한 로깅 되세요!

4

No comments

If you have a fediverse account, you can comment on this article from your own instance. Search https://hackers.pub/ap/articles/0197302f-4703-73b0-b216-362dae1c65cd on your instance and reply to it.