Heim >Web-Frontend >js-Tutorial >LogLayer: Eine moderne Protokollierungsbibliothek für TypeScript/JavaScript

LogLayer: Eine moderne Protokollierungsbibliothek für TypeScript/JavaScript

Susan Sarandon
Susan SarandonOriginal
2025-01-16 13:08:57208Durchsuche

LogLayer: A Modern Logging Library for TypeScript / JavaScript

Müden Sie es, mehrere Protokollierungsbibliotheken projektübergreifend zu jonglieren? Sind Sie frustriert über die inkonsistente Fehler- und Metadatenprotokollierung? LogLayer, eine Open-Source-Lösung, optimiert Ihren Protokollierungsprozess und verbessert die Entwicklererfahrung.

Was ist LogLayer?

LogLayer fungiert als einheitliche Protokollierungsschicht, kompatibel mit gängigen Protokollierungsbibliotheken (Pino, Winston, Bunyan) und Cloud-Anbietern (AWS, Google Cloud, DataDog). Es bietet eine konsistente, intuitive API zum Protokollieren von Nachrichten, Metadaten und Fehlern und leitet Ihre Protokolle an das von Ihnen gewählte Ziel weiter.

Hier ist ein kurzes Beispiel:

<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>

Hauptvorteile von LogLayer:

  • Nahtloser Bibliothekswechsel: Einfacher Wechsel von Protokollierungsbibliotheken ohne Code-Refactoring. Stellen Sie sich vor, Sie müssten mitten im Projekt von Pino zu Winston wechseln – LogLayer macht das schmerzlos.

  • Konsistente API: Eine einheitliche API macht es überflüssig, sich bibliotheksübergreifend unterschiedliche Methodennamen und Parameterreihenfolgen zu merken. Vergleichen Sie:

<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>
  • Multi-Transport-Unterstützung: Senden Sie Protokolle gleichzeitig an mehrere Ziele (z. B. DataDog und Ihren Logger):
<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>
  • Vereinfachte Fehlerbehandlung:Standardisierte Fehlerbehandlung in allen Bibliotheken.

  • Erweiterbares Plugin-System: Fügen Sie Plugins für Funktionen wie das Schwärzen vertraulicher Daten hinzu.

  • Müheloses Testen: Integrierte Mocks vereinfachen das Testen.

Erste Schritte:

Die Installation ist einfach:

<code class="language-bash">npm install loglayer</code>

Grundlegende Verwendung:

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

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

log.info('Hello world!')</code>

Mehr erfahren:

  • Offizielle Dokumentation
  • GitHub-Repository
  • NPM-Paket

Das obige ist der detaillierte Inhalt vonLogLayer: Eine moderne Protokollierungsbibliothek für TypeScript/JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn