> 웹 프론트엔드 > JS 튜토리얼 > LogLayer: TypeScript/JavaScript를 위한 최신 로깅 라이브러리

LogLayer: TypeScript/JavaScript를 위한 최신 로깅 라이브러리

Susan Sarandon
풀어 주다: 2025-01-16 13:08:57
원래의
167명이 탐색했습니다.

LogLayer: A Modern Logging Library for TypeScript / JavaScript

프로젝트 전반에 걸쳐 여러 로깅 라이브러리를 저글링하는 데 지치셨나요? 일관되지 않은 오류와 메타데이터 로깅으로 인해 불만이 있으신가요? 오픈 소스 솔루션인 LogLayer는 로깅 프로세스를 간소화하고 개발자 경험을 향상시킵니다.

LogLayer란 무엇인가요?

LogLayer는 널리 사용되는 로깅 라이브러리(Pino, Winston, Bunyan) 및 클라우드 제공업체(AWS, Google Cloud, DataDog)와 호환되는 통합 로깅 계층 역할을 합니다. 메시지, 메타데이터 및 오류를 로깅하기 위한 일관되고 직관적인 API를 제공하여 선택한 대상으로 로그를 보냅니다.

다음은 간단한 예입니다.

<code class="language-typescript">import { LogLayer } from 'loglayer'
import { PinoTransport } from '@loglayer/transport-pino'
import pino from 'pino'

// Configure LogLayer with Pino
const log = new LogLayer({
  transport: new PinoTransport({ logger: pino() })
})

// Log with metadata
log.withMetadata({ userId: '123', action: 'login' })
   .info('User logged in successfully')

// Contextual logging (persists across calls)
log.withContext({ requestId: '123' })
log.info('Processing request') // requestId included

try {
  // ... potential error-throwing code
} catch (error) {
  log.withError(error)
     .withMetadata({ userId: '123' })
     .error('User request processing failed')
}</code>
로그인 후 복사

LogLayer의 주요 장점:

  • 원활한 라이브러리 전환: 코드 리팩토링 없이 로깅 라이브러리를 쉽게 전환할 수 있습니다. 프로젝트 도중에 Pino에서 Winston으로 교체해야 한다고 상상해보세요. LogLayer를 사용하면 이 작업이 수월해집니다.

  • 일관된 API: 통합 API를 사용하면 라이브러리 전체에서 서로 다른 메소드 이름과 매개변수 순서를 기억할 필요가 없습니다. 비교:

<code>// LogLayer's consistent approach:
log.withMetadata({ some: 'data' }).info('my message')

// Inconsistent APIs without LogLayer:
winston.info('my message', { some: 'data' })     // winston
bunyan.info({ some: 'data' }, 'my message')      // bunyan</code>
로그인 후 복사
  • 다중 전송 지원: 동시에 여러 대상(예: DataDog 및 로거)으로 로그 보내기:
<code class="language-typescript">import { LogLayer } from 'loglayer'
import { datadogLogs } from '@datadog/browser-logs'
import { PinoTransport } from "@loglayer/transport-pino"
import { DatadogBrowserLogsTransport } from "@loglayer/transport-datadog-browser-logs"

// Datadog initialization (replace placeholders)
datadogLogs.init({
  clientToken: '<client_token>',
  site: '<datadog_site>',
  forwardErrorsToLogs: true,
  sampleRate: 100
})

const log = new LogLayer({
  transport: [
    new PinoTransport({ logger: pino() }),
    new DatadogBrowserLogsTransport({ logger: datadogLogs })
  ]
})

// Logs sent to both Pino and DataDog
log.info('User logged in successfully')
</datadog_site></client_token></code>
로그인 후 복사
  • 단순화된 오류 처리: 모든 라이브러리에 걸쳐 표준화된 오류 처리.

  • 확장 가능한 플러그인 시스템: 민감한 데이터 수정과 같은 기능을 위한 플러그인을 추가하세요.

  • 손쉬운 테스트: 내장된 모의 기능으로 테스트가 단순화됩니다.

시작하기:

설치가 간단합니다.

<code class="language-bash">npm install loglayer</code>
로그인 후 복사

기본 사용법:

<code class="language-typescript">import { LogLayer, ConsoleTransport } from 'loglayer'

const log = new LogLayer({ transport: new ConsoleTransport({ logger: console }) })

log.info('Hello world!')</code>
로그인 후 복사

자세히 알아보기:

  • 공식 문서
  • GitHub 저장소
  • NPM 패키지

위 내용은 LogLayer: TypeScript/JavaScript를 위한 최신 로깅 라이브러리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿