当前位置: 首页 > 知识库问答 >
问题:

ILogger不尊重应用程序洞察的日志级别

楮庆
2023-03-14

唯一可以解决这一问题的方法是在startup.configure()中添加下面一行代码

            loggerFactory.AddApplicationInsights(app.ApplicationServices, LogLevel.Information);

上面的解决方案是不可取的,因为我们希望根据环境不同地配置日志级别,因此基于配置的解决方案将是首选的。此外,我猜测问题是配置相关的,因为它在本地运行良好。在Azure中没有特殊的配置。

下面是整个startup.configure():

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseMvc();

    loggerFactory.AddApplicationInsights(app.ApplicationServices, LogLevel.Information);

}
namespace TestLoggingApplication
{
    public class Program
    {
        public static void Main(string[] args)
        {
            BuildWebHost(args).Run();
        }

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseApplicationInsights()
                .UseStartup<Startup>()
                .Build();
    }
}
{
  "Logging": {
    "IncludeScopes": false,
    "Debug": {
      "LogLevel": {
        "Default": "Debug"
      }
    },
    "Console": {
      "LogLevel": {
        "Default": "Debug"
      }
    },
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  },
  "ApplicationInsights": {
    "InstrumentationKey": "00000000-0000-0000-0000-000000000000"
  }
}

共有1个答案

爱炯
2023-03-14

更新:这里提供了正确启用日志捕获的新说明。https://docs.microsoft.com/en-us/azure/azure-monitor/app/ilogger

启用日志记录支持的正确方法是在configure方法中使用LoggerFactory.AddApplicationInsights()。当您从Visual Studio运行时,您不需要这一行,因为VS为您做了隐藏。但从VS外部运行时将无法工作,因此请添加LoggerFactory.AddApplicationInsights方法。https://github.com/microsoft/applicationinsights-aspnetcore/wiki/logging

若要根据环境获取不同的日志级别,请在条件语句中使用这一行。类似于下面的示例。

if(env.IsDeveleopment())
{
   loggerFactory.AddApplicationInsights(app.ApplicationServices, LogLevel.Debug);
}
else if(env.IsPreProduction())
{
   loggerFactory.AddApplicationInsights(app.ApplicationServices, LogLevel.Verbose);

}
else
{
   loggerFactory.AddApplicationInsights(app.ApplicationServices, LogLevel.Warning);

}
 类似资料:
  • 我正在设置一个新的web应用程序,通过Application Insights登录。我已经安装了AI,并且看到了所有预期的遥测(服务器请求、失败的请求等),但没有通过ILogger发送日志。我已经看过所有类似的问题,我可以找到这样,但没有解决我的问题。 我正在使用。NET 5和2.17版。Microsoft的0(最新版本)。应用程序指示灯。AspNetCore-nuget包。连接字符串和检测键显示

  • 我有一个使用应用程序洞察的.NET5Web应用程序。我尝试使用登录AI trace。然而:当分析Azure上AI中的“痕迹”内容时,日志并不显示。 启动部分: 应该进行日志记录的类的构造函数通过依赖注入来注入ILogger和AppInsights: 在该方法中,我有以下两个日志记录尝试: instrumentationkey存储在appsettings中(显然正确,因为telemetryClien

  • Azure应用程序洞察或日志分析的用例是什么? 我正在使用APIM和Azure函数,并希望对请求执行日志记录。应用洞察和日志分析哪一个最合适? https://docs.microsoft.com/en-gb/Azure/Azure-monitor/overview 更新 特别是关于APIM使用的Azure应用程序洞察与日志分析的任何信息?

  • 我想有一个共享的应用程序insights实例,将保存来自不同微服务运行的所有日志。 或者说,共享应用程序insights实例并将所有日志和遥测都放在一堆中是不是一个坏主意?

  • 我有一个Azure函数连接到一个App Insights实例。函数app会发出日志消息,我可以在Azure portal的日志流中看到这些消息,并在app Insights跟踪时看到这些消息。 通过在中添加元素(https://github.com/Azure/azure-webjobs-sdk-script/wiki/host.json),我将控制台日志级别增加到了详细,因此详细级别的消息会出现

  • 我正在尝试将Azure App insights service集成到service fabric App中,用于日志记录和检测。我正在本地VM上运行fabric代码。我完全遵循了这里的文档[场景2]。docs.microsoft.com上的其他资源似乎也指明了相同的步骤。[例如:https://docs.microsoft.com/en-us/Azure/service-fabric/servi