如果您只需要记录消息。你可以使用 log 包来做 nodejs。
安装:
npm i log
这是通用日志工具
可配置、环境和演示不可知,支持日志级别和命名空间(调试样式)
用法
写日志
// Default logger writes at 'info' level
const log = require("log");
// Log 'info' level message:
log("some info message %s", "injected string");
// Get namespaced logger (debug lib style)
log = log.get("my-lib");
// Log 'info' level message in context of 'my-lib' namespace:
log("some info message in 'my-lib' namespace context");
// Namespaces can be nested
log = log.get("func");
// Log 'info' level message in context of 'my-lib:func' namespace:
log("some info message in 'my-lib:func' namespace context");
// Log 'error' level message in context of 'my-lib:func' namespace:
log.error("some error message");
// log output can be dynamically enabled/disabled during runtime
const { restore } = log.error.disable();
log.error("error message not really logged");
// Restore previous logs visibiity state
restore();
log.error("error message to be logged");
可用的日志级别
适用的系统日志级别的镜像(按严重性顺序):
debug - 调试信息(默认隐藏)
info - 纯粹的信息性消息(默认隐藏)
注意 - 情况正常,但很重要
警告(也称为警告) - 条件警告
error - 条件错误 - 通知带有恢复机制的错误(因此报告为日志而不是未捕获的异常)
注意:critical、alert、emergency 不会暴露,因为它们似乎不适用于 JS 应用程序上下文中的用例,这些错误应该作为典型的异常暴露出来
输出消息格式
log 不会强制处理任何特定的参数。仍然建议采用类似 printf 的消息格式,因为所有当前可用的编写器都设置为支持它。占位符支持反映了一个以 Node.js 格式实现的实用程序
Node.js 文档节选:
第一个参数是一个包含零个或多个占位符标记的字符串。每个占位符标记都被相应参数的转换值替换。支持的占位符有:
%s - 字符串。
%d - 数字(整数或浮点值)。
%i - 整数。
%f - 浮点值。
%j - JSON。如果参数包含循环引用,则替换为字符串“[Circular]”。
%o - 对象。具有通用 JavaScript 对象格式的对象的字符串表示形式。类似于 util.inspect() 选项 { showHidden: true, depth: 4, showProxy: true }。这将显示完整的对象,包括不可枚举的符号和属性。
%O - 对象。具有通用 JavaScript 对象格式的对象的字符串表示形式。类似于 util.inspect() 没有选项。这将显示不包括不可枚举符号和属性的完整对象。
%% - 单个百分号 ('%')。这不会消耗一个论点。
日志写入器配置开发人员注意事项:为了跨环境兼容性,建议基于 sprintf-kit 实现
启用日志写入
自己登录不会向控制台或任何其他方式写入任何内容(它只是发出事件以供预加载的日志写入器使用)。
要写入日志,需要在进程的主(启动)模块中初始化预先选择的日志写入器。
可用的日志写入器列表
log-node - 用于典型的 Node.js 进程
log-aws-lambda - 适用于 AWS lambda 环境
注意:如果缺少某些作者,请提出 PR
日志可见性
默认可见性取决于环境(有关更多信息,请参阅选择的日志编写器),并且在大多数情况下通过以下环境变量设置:
LOG_LEVEL
(默认通知)最低日志级别,从该级别(向上)所有日志都将被公开。
LOG_DEBUG
在低于 LOG_LEVEL 阈值的级别公开的命名空间的最终列表
列表以逗号分隔,例如foo,-foo:bar(暴露所有 foo 但不暴露 foo:bar)。
它遵循调试中配置的约定。为了简化从调试的最终迁移,如果 LOG_DEBUG 不存在,配置回退到 DEBUG env var。
时间戳记录
建议编写者在设置以下 env var 时在每个日志旁边公开时间戳
LOG_TIME
rel (默认) - 记录自记录器初始化以来经过的时间
abs - 以 ISO 8601 格式记录绝对时间
测试
$ npm test
项目跨浏览器兼容性支持: