Azure 应用程序洞察使用 java 中的 log4j 框架记录消息,如下所示。
https://docs.microsoft.com/en-us/azure/azure-monitor/app/java-trace-logs
在不使用 azure node sdk 记录消息的情况下,nodejs 应用程序是否有类似的东西。我正在寻找使用 log4js 消息将日志消息记录到带有一些配置更改的 App 洞察力。
Azure 应用程序洞察使用 java 中的 log4j 框架记录消息,如下所示。
https://docs.microsoft.com/en-us/azure/azure-monitor/app/java-trace-logs
在不使用 azure node sdk 记录消息的情况下,nodejs 应用程序是否有类似的东西。我正在寻找使用 log4js 消息将日志消息记录到带有一些配置更改的 App 洞察力。
如果您只需要记录消息。您可以使用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 - 纯粹的信息性消息(默认隐藏) notice - 条件正常,但重要的警告(也称为警告) - 条件警告错误 - 条件错误 - 通知带有恢复机制的错误(因此报告为日志而不是未捕获的异常)注意:关键、警报、紧急情况不会公开,因为似乎不服务于 JS 应用程序上下文中的用例,此类错误应作为典型异常公开
输出消息格式化日志不会强制处理任何特定的参数。仍然建议采用类似 printf 的消息格式,因为所有当前可用的编写器都设置为支持它。占位符支持反映了一个以 Node.js 格式实现的 util
摘自 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(默认为notice)最低日志级别(向上)将公开所有日志。
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
项目跨浏览器兼容性支持: