前言
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 数据库。
- 通过 NPM 安装
weblog-mssql
。
npm install 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
: 日志等级,支持error
、warn
、info
、verbose
、debug
、silly
六个等级,默认为verbose
自定义格式
我们可以通过重写 winston
的默认 format
对象,自定义日志的格式。
-- -------------------- ---- ------- ----- ------ - ---------------------- ------ ------- ------- ----------------------- --------------------------- ---------------------- -------------------------- -- - ------ ------------------ ------------------------------ ----------------- -- -- ----------- - --- ------------- ------- ------------ --------- ------- ----- -------- --------- ----------- ---------- --------- ------ ------ -- - --- ------------------- -------- - ---- ----- ---
上述代码通过组合 timestamp()
、json()
和 printf()
三个函数,实现了自定义的格式。
如何自定义数据库表结构
如果您不想使用默认的数据库表结构,可以通过向 weblog
表添加自定义列来实现。
ALTER TABLE weblog ADD operation varchar(20);
然后在使用 weblogMssql
时,配置 columns
选项:
-- -------------------- ---- ------- --- ------------- ------- ------------ --------- ------- ----- -------- --------- ----------- ---------- --------- ------ ------- -------- - -------- - ----- -------- --------- ---- -- ----- - ----- ---------------- --------- ---- -- ---------- - ----- --------------- --------- ---- - - --
该配置会告诉 weblogMssql
,在向数据库中写入日志时,要将 message
字段保存在 ntext
类型的 column 上,并将 meta
字段保存在 nvarchar(max)
类型的 column 上。
如何实现日志分割
weblogMssql
内置了日志分割的功能,可以配置多种分割策略:
-- -------------------- ---- ------- --- ------------- ------- ------------ --------- ------- ----- -------- --------- ----------- ---------- --------- ------ ------- ---------- ----- ------- - ----- --------- ------ - - --
上述配置将按照分钟进行分割,每 5 分钟生成一个新的日志文件。
如何添加额外参数
有时,我们需要将额外的参数添加到日志中,这可以通过 logger 的第二个参数进行实现。
logger.info('Hello, world!', { foo: 'bar' });
上述代码将 foo
字段作为日志参数添加到日志中。
总结
本文详细介绍了如何使用 weblog-mssql
将日志保存到 MSSQL 数据库中,以及如何进行配置和自定义。希望本文对您有所帮助,谢谢阅读!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600671048dd3466f61ffdc99