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

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

我有一个 spring 引导应用程序,它具有非常标准的 logback 配置。我知道我可以通过将日志记录级别 属性 更改为仅记录错误 (<root level = "ERROR">) 来 on/off 详细日志记录。而且我已经将我的应用程序配置为仅在我拥有的 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 参数。 Tips for updating your JVM args.

  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 资源以查看您的监控数据。

更多信息请参考 ,Configuration Options and Kusto query

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

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