繁体   English   中英

从 Java Spring 启动应用程序记录到 Azure 应用程序洞察的条件详细错误

[英]Conditional verbose error logging to Azure application-insights from a Java Spring boot application

我有一个带有非常标准的 logback 配置的 Spring Boot 应用程序。 我知道我可以通过将日志级别属性更改为仅记录错误(<root level = "ERROR">)来打开/关闭详细日志记录。 我已经将我的应用程序配置为仅在我拥有的 application-insights azure 资源中记录错误,以避免在必要时进行冗长的日志记录。 所有这些都运行良好。

但是,一旦出现错误,我想开始详细记录一段时间,比如说 2 小时,以帮助进行故障排除。 这是我无法实现的。 我对 Java 和 Azure 资源配置很陌生,所以任何想法都会非常有帮助。

感谢Tiny Wang发表您的评论作为答案。

使用 Azure Monitor Application Insights 监视 Java 无代码应用程序的步骤。

  1. 下载代理

  2. 将 JVM 指向代理 将-javaagent:path/to/applicationinsights-agent-3.2.0.jar到应用程序的 JVM 参数。 更新 JVM 参数的提示

  3. 将代理指向您的 Application Insights 资源,通过设置环境变量将代理指向您的 Application Insights 资源:

    APPLICATIONINSIGHTS_CONNECTION_STRING=InstrumentationKey= ...

或者通过创建一个名为applicationinsights.json的配置文件,并将其放置在与applicationinsights-agent-3.2.0.jar相同的目录中,内容如下:

JSON
{
  "connectionString": "InstrumentationKey=..."
}

您可以在 Application Insights 资源中找到您的连接字符串。

启动应用程序并转到 Azure 门户中的 Application Insights 资源以查看监控数据。

请参阅SO 线程配置选项Kusto 查询以获取更多信息。

感谢对这个问题的回答和评论,它们将被证明是将来遇到这个问题的人的一个很好的资源。 但是,需要对这种情况做出更明确的回答。 我能够通过以下方法为我的应用程序实现有条件的、基于时间的、详细的日志记录:

  1. 在 azure 门户中创建指向正在使用的 azure 资源的警报
  2. 配置该警报的操作组以调用控制器操作方法,选择 webhook 作为操作类型。
  3. 在您的控制器操作方法中,将日志记录级别设置更改为所需时间段的详细日志记录,然后将其重置为非详细记录。 (我为此使用了非阻塞 Thread.sleep())
  4. 享受自动化:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM