Heim >Web-Frontend >js-Tutorial >LogLayer: Eine moderne Protokollierungsbibliothek für 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>
<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:
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!