【问题标题】:Application Insights logging with log4js in java在 Java 中使用 log4js 进行 Application Insights 日志记录
【发布时间】:2020-02-23 11:33:40
【问题描述】:

使用 java 中的 log4j 框架的 Azure 应用程序洞察日志消息如下所示。

https://docs.microsoft.com/en-us/azure/azure-monitor/app/java-trace-logs

在不使用 azure node sdk 记录消息的情况下,nodejs 应用程序是否有类似的东西。我正在寻找使用 log4js 消息将日志消息记录到 App 洞察中并进行一些配置更改。

【问题讨论】:

    标签: node.js azure-application-insights log4js-node


    【解决方案1】:

    如果您只需要记录消息。你可以使用 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 项目跨浏览器兼容性支持:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-21
      • 2021-04-18
      • 1970-01-01
      • 2023-01-09
      • 2014-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多