LogTape 0.12.0 릴리스 노트

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub
LogTape는 JavaScript와 TypeScript를 위한 의존성 없는 로깅 라이브러리로, 간단하면서도 유연한 로깅 시스템을 제공합니다. 여러 JavaScript 런타임(Deno, Node.js, Bun, 브라우저 및 엣지 함수)을 지원하고, 계층적 카테고리, 구조화된 로깅 기능을 갖추고 있으며, 애플리케이션과 라이브러리 모두에 원활하게 통합됩니다.
0.12.0의 새로운 기능
Trace 로그 레벨
LogTape에 이제 trace
심각도 레벨이 포함되었습니다. 이는 상세도 계층에서 debug
아래에 위치합니다. 이 추가 기능은 로깅 출력에 대한 더 세밀한 제어를 제공하며, 특히 개발 및 디버깅 중 상세한 실행 흐름 추적에 유용합니다.
LogLevel
유니온 타입에"trace"
추가- 트레이스 레벨 메시지를 로깅하기 위한
Logger.trace()
메서드 추가 - 완전한 심각도 계층은 이제:
trace
<debug
<info
<warning
<error
<fatal
향상된 파일 싱크 성능
파일 싱크는 이제 구성 가능한 버퍼링을 지원하여 대용량 로깅 시나리오에서 쓰기 성능을 크게 향상시킵니다.
- 쓰기 버퍼링 동작을 제어하기 위한
bufferSize
옵션(기본값: 8192자) 추가 - 자동 시간 기반 버퍼 플러시를 위한
flushInterval
옵션(기본값: 5000ms) 추가 - 버퍼링 없이 즉시 쓰기를 위해
bufferSize
를 0으로 설정 - 시간 기반 플러시를 비활성화하려면
flushInterval
을 0으로 설정 - 싱크가 폐기될 때 버퍼 내용이 자동으로 플러시됨
이러한 옵션은 getFileSink()
와 getRotatingFileSink()
함수 모두에서 사용할 수 있습니다.
Syslog 지원
새로운 @logtape/syslog 패키지를 통해 RFC 5424 형식을 사용하여 syslog 서버로 로그 메시지를 보낼 수 있습니다.
- UDP 및 TCP 프로토콜 모두 지원
- 모든 표준 RFC 5424 시설(
kern
,user
,mail
,daemon
,local0
–7
등) - 로그 레벨에 기반한 자동 우선순위 계산
- 로그 레코드 속성에 대한 구조화된 데이터 지원
- Deno, Node.js 및 Bun과의 크로스 런타임 호환성
- 구성 가능한 연결 타임아웃, 사용자 정의 호스트명 및 애플리케이션 이름
로거 메서드 별칭
Logger.warn()
의 별칭으로 Logger.warning()
을 추가하여 LogLevel
타입 정의와의 일관성을 보장합니다. 이 변경은 LogLevel
유니온 타입이 "warning"
을 사용하는 반면 로거 메서드는 warn()
으로 명명되어 있던 이름 불일치를 해결하여 메타프로그래밍과 동적 메서드 호출을 더 간단하게 만듭니다.
통합 패키지 릴리스
0.12.0 버전부터 @logtape/otel, @logtape/sentry, @logtape/syslog를 포함한 모든 LogTape 패키지는 동일한 버전 번호를 공유하고 함께 릴리스됩니다. 이를 통해 패키지 간 호환성을 보장하고 사용자의 버전 관리를 단순화합니다.
개선된 빌드 인프라
LogTape는 npm 패키지 번들링을 위해 dnt에서 tsdown으로 마이그레이션했습니다. tsdown은 차세대 Vite를 지원하는 Rust 기반 번들러인 Rolldown 위에 구축된 라이브러리 중심 번들러입니다. 범용 번들러와 달리 tsdown은 최소한의 구성으로 TypeScript 및 JavaScript 라이브러리를 빌드하는 데 특화되어 있습니다. 이 변경으로 다음과 같은 여러 이점이 있습니다:
- Webpack, Vite 및 기타 빌드 도구에서 번들러 경고 제거
- 현대적인 JavaScript 툴체인과의 호환성 향상
- 더 나은 트리 쉐이킹 지원
- 더 깔끔한 패키지 출력
- Rust 기반 성능 최적화를 통한 더 빠른 빌드 시간
마이그레이션 가이드
Trace 레벨로 업데이트
debug
가 가장 낮은 심각도 레벨이라는 것에 의존하는 코드가 있다면 로그 레벨 구성을 업데이트해야 할 수 있습니다:
// 이전
{ lowestLevel: "debug" } // 이전에는 가장 상세한 설정이었습니다
// 이후
{ lowestLevel: "trace" } // 이제 trace 메시지를 포함합니다
버퍼 구성 활용
고처리량 시나리오에서 파일 싱크 성능을 최적화하려면:
getFileSink("app.log", {
bufferSize: 16384, // 더 나은 성능을 위한 더 큰 버퍼
flushInterval: 10_000 // 10초마다 플러시
})
설치
LogTape 0.12.0은 JSR과 npm에서 사용 가능합니다:
deno add jsr:@logtape/logtape # Deno
npm add @logtape/logtape # npm
pnpm add @logtape/logtape # pnpm
yarn add @logtape/logtape # yarn
bun add @logtape/logtape # Bun
syslog 싱크의 경우:
deno add jsr:@logtape/syslog # Deno
npm add @logtape/syslog # npm
pnpm add @logtape/syslog # pnpm
yarn add @logtape/syslog # yarn
bun add @logtape/syslog # Bun
감사의 말
이 릴리스를 가능하게 도와주신 모든 기여자들, 문제를 보고하고, 풀 리퀘스트를 제출하고, 피드백을 제공해 주신 모든 분들께 감사드립니다.
전체 변경 사항 목록은 변경 로그를 참조하세요.