Application Insights Log4Net Appender - 遥测采样和可靠性
Application Insights Log4Net Appender - telemetry sampling and reliability
我们目前使用 log4net 和 DB / File appender 来捕获 log4net 日志记录。在生产环境中,虽然我们大多只使用 WARN 和更高级别的日志记录,但有时会打开 INFO 级别的日志记录以解决最终用户问题。
这些附加程序是可靠的,我们没有丢失日志的经验,因此我们的支持无法解决问题。
我们正在为我们的应用程序设置 Azure 托管,Application Insights 通过其标准遥测收集增加了很多价值。我们现在正在评估将 log4net 日志重定向到 Application Insights 并逐步使 AI 成为日志聚合器。
MS 发布了一个 log4net AI appender - https://www.nuget.org/packages/Microsoft.ApplicationInsights.Log4NetAppender
我没有找到关于抽样如何影响日志的足够信息。例如如果一些 INFO 日志丢失到采样中,这并不理想,但我们可能仍然没问题。如果 WARN、ERROR 或 FATAL 日志丢失,那只会使 AI 不可靠,我们的支持人员无法使用它们,它们只会退回到数据库或文件中的传统日志。
对自动遥测(如请求、依赖项)进行采样是可以理解的,但是是否有一种机制可以确保 Log4net 日志在 Application Insights 中可靠地可用?
根据 this issue,Log4Net appender
的采样方式应与其他遥测的采样方式相同。
因此您可以使用代码关闭采样(默认采样为 Adaptive sampling)。
例如,如果是.net core应用程序,您可以按照this doc使用下面的代码:
public void ConfigureServices(IServiceCollection services)
{
// ...
var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
aiOptions.EnableAdaptiveSampling = false;
services.AddApplicationInsightsTelemetry(aiOptions);
//...
}
我们目前使用 log4net 和 DB / File appender 来捕获 log4net 日志记录。在生产环境中,虽然我们大多只使用 WARN 和更高级别的日志记录,但有时会打开 INFO 级别的日志记录以解决最终用户问题。
这些附加程序是可靠的,我们没有丢失日志的经验,因此我们的支持无法解决问题。
我们正在为我们的应用程序设置 Azure 托管,Application Insights 通过其标准遥测收集增加了很多价值。我们现在正在评估将 log4net 日志重定向到 Application Insights 并逐步使 AI 成为日志聚合器。
MS 发布了一个 log4net AI appender - https://www.nuget.org/packages/Microsoft.ApplicationInsights.Log4NetAppender
我没有找到关于抽样如何影响日志的足够信息。例如如果一些 INFO 日志丢失到采样中,这并不理想,但我们可能仍然没问题。如果 WARN、ERROR 或 FATAL 日志丢失,那只会使 AI 不可靠,我们的支持人员无法使用它们,它们只会退回到数据库或文件中的传统日志。
对自动遥测(如请求、依赖项)进行采样是可以理解的,但是是否有一种机制可以确保 Log4net 日志在 Application Insights 中可靠地可用?
根据 this issue,Log4Net appender
的采样方式应与其他遥测的采样方式相同。
因此您可以使用代码关闭采样(默认采样为 Adaptive sampling)。
例如,如果是.net core应用程序,您可以按照this doc使用下面的代码:
public void ConfigureServices(IServiceCollection services)
{
// ...
var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
aiOptions.EnableAdaptiveSampling = false;
services.AddApplicationInsightsTelemetry(aiOptions);
//...
}