首页 > web前端 > js教程 > LogLayer:适用于 TypeScript / JavaScript 的现代日志库

LogLayer:适用于 TypeScript / JavaScript 的现代日志库

Susan Sarandon
发布: 2025-01-16 13:08:57
原创
207 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板