npm 包 weblog-mssql 使用教程

阅读时长 6 分钟读完

前言

log 是软件开发的重要组成部分之一,最常见的日志就是记录程序运行时产生的信息。在生产环境中,程序的日志往往需要落地到文件或者数据库中,以便后续的排查和监控。

而 Node.js 生态中,有一个非常流行的 log 处理库 winston,它提供了丰富的 logging transport,可以满足绝大多数场景的需求。其中,winston-mssql 是一个与 MSSQL 数据库交互的 transport,但是它已经停止维护。

我们可以使用一个现成的库 weblog-mssql,来方便的将日志保存到 MSSQL 数据库中。本文将详细介绍如何使用该库。

什么是 weblog-mssql

weblog-mssql 是一个面向 Node.js 生态的日志处理库,它实现了 winston 中的 transport 接口,可以将 winston 产生的日志保存到 MSSQL 数据库中。主要特点如下:

  • 支持自定义日志等级和数据库表结构。
  • 内置日志分割功能,支持按天、按月、按年等多种分割策略。
  • 支持直接在日志中添加参数。

如何安装

在执行下列操作之前,请确保在您的计算机上安装了 Node.js 和 MSSQL 数据库。

  1. 通过 NPM 安装 weblog-mssql

如何使用

下面将通过一个简单的例子来说明如何使用 weblog-mssql

-- -------------------- ---- -------
----- ------- - -------------------
----- ----------- - ------------------------

----- ------ - ----------------------
  ------ -------
  ------- ----------------------
  ----------- -
    --- -------------
      ------- ------------
      --------- -------
      ----- --------
      --------- -----------
      ---------- ---------
      ------ ------
    --
  -
---

------------------- -------- - ---- ----- ---

上面的代码创建了一个 winston logger,然后创建了一个 weblogMssql transport,将 weblogMssql 作为 logger 的 transport 进行注册。在代码的末尾,记录一条 log。

首先需要明确,与数据库的交互是基于 tedious 库实现的。因此,我们通过 weblogMssql 的构造函数,传递一个与 tedious 相同的配置对象来实现与 MSSQL 数据库的连接。

weblogMssql 提供了以下配置项:

  • server: 数据库所在的服务器地址,默认为 localhost
  • database: 要使用的数据库名
  • user: 数据库的用户名
  • password: 数据库密码
  • tableName: 数据库中保存日志的表名,默认为 weblog
  • level: 日志等级,支持 errorwarninfoverbosedebugsilly 六个等级,默认为 verbose

自定义格式

我们可以通过重写 winston 的默认 format 对象,自定义日志的格式。

-- -------------------- ---- -------
----- ------ - ----------------------
  ------ -------
  ------- -----------------------
    ---------------------------
    ----------------------
    -------------------------- -- -
      ------ ------------------ ------------------------------ -----------------
    --
  --
  ----------- -
    --- -------------
      ------- ------------
      --------- -------
      ----- --------
      --------- -----------
      ---------- ---------
      ------ ------
    --
  -
---

------------------- -------- - ---- ----- ---

上述代码通过组合 timestamp()json()printf() 三个函数,实现了自定义的格式。

如何自定义数据库表结构

如果您不想使用默认的数据库表结构,可以通过向 weblog 表添加自定义列来实现。

然后在使用 weblogMssql 时,配置 columns 选项:

-- -------------------- ---- -------
--- -------------
  ------- ------------
  --------- -------
  ----- --------
  --------- -----------
  ---------- ---------
  ------ -------
  -------- -
    -------- - ----- -------- --------- ---- --
    ----- - ----- ---------------- --------- ---- --
    ---------- - ----- --------------- --------- ---- -
  -
--

该配置会告诉 weblogMssql,在向数据库中写入日志时,要将 message 字段保存在 ntext 类型的 column 上,并将 meta 字段保存在 nvarchar(max) 类型的 column 上。

如何实现日志分割

weblogMssql 内置了日志分割的功能,可以配置多种分割策略:

-- -------------------- ---- -------
--- -------------
  ------- ------------
  --------- -------
  ----- --------
  --------- -----------
  ---------- ---------
  ------ -------
  ---------- -----
  ------- -
    ----- ---------
    ------ -
  -
--

上述配置将按照分钟进行分割,每 5 分钟生成一个新的日志文件。

如何添加额外参数

有时,我们需要将额外的参数添加到日志中,这可以通过 logger 的第二个参数进行实现。

上述代码将 foo 字段作为日志参数添加到日志中。

总结

本文详细介绍了如何使用 weblog-mssql 将日志保存到 MSSQL 数据库中,以及如何进行配置和自定义。希望本文对您有所帮助,谢谢阅读!

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600671048dd3466f61ffdc99

纠错
反馈