厭倦了跨專案使用多個日誌庫? 對不一致的錯誤和元資料日誌記錄感到沮喪? 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>
<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>
了解更多:
以上是LogLayer:適用於 TypeScript / JavaScript 的現代日誌庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!