厌倦了跨项目使用多个日志库? 对不一致的错误和元数据日志记录感到沮丧? 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中文网其他相关文章!