简介
bunyan-serializer 是一个 Node.js 的模块,其作用是为 bunyan 日志模块提供一种机制,以便序列化由 bunyan 产生的日志,从而可以将 bunyan 产生的日志传输到远程日志系统。bunyan-serializer 可以将 bunyan 产生的 JSON 格式的日志序列化为 JSON 字符串,或解析为对象,方便在网络上使用或传输。
本文将详细介绍 bunyan-serializer 的安装、配置和使用,以及常见问题的解决方案。
安装
npm install bunyan-serializer --save
配置
使用 bunyan-serializer 的第一步是配置 bunyan。主要配置项是以下三个:
- type:表示日志流中的日志对象格式,默认值为 "raw"。
- formatter:表示 bunyan 在生成日志消息之前应用的格式化程序,默认值为 "null"。
- serializers:表示将要使用哪些消息序列化程序及其名称,默认值为 "bunyan.stdSerializers"。
为了使 bunyan-serializer 生效,需要将 serializers 配置项加到 bunyan 的配置中。例如:
-- -------------------- ---- ------- ----- ------ - ------------------ ----- ---------------- - ----------------------------- ----- --- - --------------------- ----- -------- ------------ - ---- ------------------------------- ---- ------------------------------- ---- ------------------------------ - ---
使用
以上面配置为例,可以使用 log 对象产生一条日志,如下所示:
log.info({req: {}, res: {}, err: new Error('An error occurred.')}, 'This is a message.');
在启用 bunyan-serializer 后,此日志将转换为 JSON 格式:
-- -------------------- ---- ------- - ------- -------- ----------- ------------ ------ ------ -------- --- ------ --- ------ --- ------ - ---------- --- ----- ----------- ------- -------- -------- ------- -- ----- ----------- -- ----------- -- ----------------------- ---------------- -- ---------------------- ------------------ -- ----- -------------------- -- ------------------- --- ----- -------------------- -- ----------------- ------------------ -- --------------- -------------------- -- ---------------------------- -------------------- -- ---------------------------- ---------------------- -- -------------------------- -------------------- -- ------ ----- -- - ---------- ------- --------------------------- ---- - --
常见问题
如何为 bunyan-serializer 自定义序列化程序?
bunyan-serializer 的序列化程序可扩展。例如,如果需要将一个定制对象序列化为字符串,可以这样做:
-- -------------------- ---- ------- --------------------------------- - ---------------- - ------ - ---- ----------- ---- ---------- - -- ----- --- - --------------------- ----- -------- ------------ - ------- --------------------------------- - ---
此时,日志中的 custom 对象将使用自定义序列化程序 bunyanSerializer.customSerializer 进行序列化。
如何禁用 bunyan-serializer?
如果不需要使用 bunyan-serializer 的功能,可以禁用它,如下所示:
const log = bunyan.createLogger({ name: 'myapp', serializers: bunyan.stdSerializers });
此时,将不再使用 bunyan-serializer 提供的自定义序列化程序。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/68931