介绍
log4js-aliyun
是一个基于阿里云日志服务(Log Service)的 Node.js 日志库,它支持输出日志到控制台、文件、Log Service 等多个目的地,并且可以通过配置灵活地控制日志的输出格式、级别等选项。使用 log4js-aliyun
可以让 Node.js 应用更好地管理和记录日志,方便运维和后期故障排查。
安装
在终端中输入以下命令进行安装:
npm install log4js-aliyun --save
基本用法
以下是 log4js-aliyun
的基本用法示例。首先,我们需要引入包和创建配置:
-- -------------------- ---- ------- ----- ------------ - ------------------------- ------------------------ ---------- - -------- - ----- --------- -- ----------- - ----- --------------------------- --------- ------------------ -------- ----------------- --------- ------------------ ------------ ----------------------- ---------------- --------------------------- ---------------- ---- - ---- -- ------------- ---- - ---- -- - -- ----------- - -------- - ---------- ----------- -------------- ------ ------ - - ---
上述代码中,我们配置了两种输出方式:控制台 (console
) 和 Log Service (logService
)。其中,log4js-aliyun-logservice
是 log4js-aliyun
提供的插件,用于将日志输出到阿里云日志服务。在使用该插件时,我们需要提供 Log Service 的相关信息,包括 endpoint
(服务接入点)、project
(项目名称)、logstore
(日志库名称)、accessKeyId
(访问密钥 ID)和 accessKeySecret
(访问密钥密钥)。在默认的日志级别中,我们设置了输出 info
级别或以上的日志。
接下来,我们可以使用 log4js-aliyun.getLogger(category)
方法获取一个日志对象:
const logger = log4jsAliyun.getLogger('example'); logger.info('Hello, world!'); logger.warn('Something may be wrong.'); logger.error(new Error('Oops!'));
在上述代码中,我们使用 getLogger
方法创建了一个名为 example
的日志对象,然后使用 info
、warn
和 error
等方法输出不同级别的日志。需要注意的是,log4js-aliyun
中的日志级别从低到高依次为 trace
、debug
、info
、warn
、error
和 fatal
,可以通过配置文件或代码进行修改。
此时,我们可以运行程序并观察输出的日志:
$ node app.js [2021-07-01T03:00:00.000Z] [INFO] example - Hello, world! [2021-07-01T03:00:01.000Z] [WARN] example - Something may be wrong. [2021-07-01T03:00:02.000Z] [ERROR] example - Error: Oops!
进阶用法
除了基本用法中介绍的方法外,log4js-aliyun
还提供了以下进阶用法:
动态日志切换
log4js-aliyun
支持在运行时动态修改日志级别或禁用某个日志对象。例如:
const logger = log4jsAliyun.getLogger('example'); logger.setLevel('debug'); // 修改日志级别为 debug logger.trace('Trace log'); // 不会输出 logger.debug('Debug log'); // 输出日志 logger.setLevel('off'); // 禁用 example 日志对象 logger.error('Error log'); // 不会输出
通过 setLevel
方法可以修改特定日志对象的日志级别。需要注意的是,通过该方法修改的日志级别只会对当前日志对象有效,对其他日志对象无影响。此外,也可以将日志级别设置为 off
,表示禁用该日志对象。
自定义日志格式
log4js-aliyun
默认会按照以下格式输出日志:
[时间] [级别] [日志对象名称] - 日志内容
如果需要自定义日志格式,可以通过配置文件或代码进行修改。例如:
-- -------------------- ---- ------- ------------------------ ---------- - -------- - ----- ---------- ------- - ----- ------- - -- -- -- ----- ----------- ----------- - ----- --------------------------- --------- ------------------ -------- ----------------- --------- ------------------ ------------ ----------------------- ---------------- --------------------------- ------- - ----- ---------- -------- --------------- -------------- ---- ---- - ----- -- ---------- ---- -------- - ---- - - -- ----------- - -------- - ---------- ----------- -------------- ------ ------ - - ---
在上述代码中,我们通过 layout
选项配置了不同的日志格式。basic
布局只输出日志内容,其他信息(时间、级别、日志对象名称)均省略;pattern
布局则允许通过占位符自定义日志格式,如 %d
表示输出时间,%p
表示输出级别,%c
表示输出日志对象名称,%m
表示输出日志内容,%n
表示输出换行符。
日志切割和归档
log4js-aliyun
提供了两个插件 log4js-aliyun-file
和 log4js-aliyun-loghub
,用于将日志按照时间和大小进行切割和归档。例如:
-- -------------------- ---- ------- ------------------------ ---------- - ----- - ----- --------------------- --------- ------------------ -------- ------------- --------- ----- -------- -- ----------- ---- - ---- -- ------------ ---- - ---- -- -- ------- - ----- ----------------------- --------- ------------------ -------- ----------------- --------- ------------------ ------------ ----------------------- ---------------- --------------------------- ------ ------ ------------- ----- ---------------- ---- - ---- - - -- ------------- ---- - ---- -- - -- ----------- - -------- - ---------- ----------- ------- ---------- ------ ------ - - ---
在上述代码中,我们使用 log4js-aliyun-file
插件将日志文件按日期进行切割,每天生成一个新的日志文件(pattern: 'yyyy-MM-dd'
),并保留最近的三个日志文件(backups: 3
),同时启用压缩(compress: true
)。使用 log4js-aliyun-loghub
插件将日志输出到阿里云日志服务,同时将日志缓存到本地,每隔一定时间(delay: 30000
)或日志条数(sendInterval: 1000
)批量上传到 Log Service。可以通过 maxBufferLength
选项调整本地日志缓存区大小。
总结
log4js-aliyun
是一个功能强大的 Node.js 日志库,它可以帮助我们更好地记录和管理应用程序日志,方便后期的运维和故障排查。本文介绍了 log4js-aliyun
的基本用法和几个进阶特性,包括动态日志切换、自定义日志格式、日志切割和归档等。希望本文能够对读者学习和使用 log4js-aliyun
有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60056ea181e8991b448e7686