从 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 无代码应用程序监控的步骤。
下载代理
将 JVM 指向代理
将 -javaagent:path/to/applicationinsights-agent-3.2.0.jar
添加到应用程序的 JVM 参数。
Tips for updating your JVM args.
将代理指向您的 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。
感谢对问题的回答和评论,对于将来遇到此问题的人来说,它们将被证明是一个很好的资源。但是,需要针对这种情况提供更明确的答案。我能够通过以下方法为我的应用程序实现有条件的、基于时间的、详细的日志记录:
- Create an alert 在 azure 门户中指向正在使用的 azure 资源。
- Configure that alert's action group 调用控制器操作方法,选择 webhook 作为操作类型。
- 在您的控制器操作方法中,将日志记录级别设置更改为详细日志记录所需的时间段,然后将其重置回非详细日志记录。 (我为此使用了非阻塞 Thread.sleep())
- 享受自动化 :)
我有一个 spring 引导应用程序,它具有非常标准的 logback 配置。我知道我可以通过将日志记录级别 属性 更改为仅记录错误 (<root level = "ERROR">)
来 on/off 详细日志记录。而且我已经将我的应用程序配置为仅在我拥有的 application-insights azure 资源中记录错误,以避免在必要时进行冗长的日志记录。所有这些都工作正常。
但是,一旦出现错误,我想开始详细记录一段时间,比如 2 小时,以帮助进行故障排除。而这正是我无法实现的。我对 Java 和 Azure 资源配置都很陌生,所以任何想法都会很有帮助。
感谢您Tiny Wang发表您的评论作为回答。
使用 Azure Monitor Application Insights Java 无代码应用程序监控的步骤。
下载代理
将 JVM 指向代理 将
-javaagent:path/to/applicationinsights-agent-3.2.0.jar
添加到应用程序的 JVM 参数。 Tips for updating your JVM args.将代理指向您的 Application Insights 资源 通过设置环境变量将代理指向您的 Application Insights 资源:
APPLICATIONINSIGHTS_CONNECTION_STRING=InstrumentationKey=
...
或者创建一个名为applicationinsights.json
的配置文件,并将其放在与applicationinsights-agent-3.2.0.jar
相同的目录下,内容如下:
JSON
{
"connectionString": "InstrumentationKey=..."
}
您可以在 Application Insights 资源中找到您的连接字符串。
启动您的应用程序并转到 Azure 门户中的 Application Insights 资源以查看您的监控数据。
更多信息请参考
感谢对问题的回答和评论,对于将来遇到此问题的人来说,它们将被证明是一个很好的资源。但是,需要针对这种情况提供更明确的答案。我能够通过以下方法为我的应用程序实现有条件的、基于时间的、详细的日志记录:
- Create an alert 在 azure 门户中指向正在使用的 azure 资源。
- Configure that alert's action group 调用控制器操作方法,选择 webhook 作为操作类型。
- 在您的控制器操作方法中,将日志记录级别设置更改为详细日志记录所需的时间段,然后将其重置回非详细日志记录。 (我为此使用了非阻塞 Thread.sleep())
- 享受自动化 :)