簡體   English   中英

數據未在啟動時從 ILogger 發送到 App Insights

[英]Data not sent to App Insights from ILogger in Startup

我在應用程序中啟用了應用程序洞察日志記錄。 從控制器、其他類等其他地方,我可以使用記錄器並將數據發送到應用程序洞察,但在啟動時我嘗試將數據發送到 AI,但它沒有將數據推送到 AI。 我沒有收到任何錯誤,實例已創建,但數據未推送到 AI。 這是我的啟動

public class Startup
{
    private readonly ILogger _logger;
    public Startup(ILogger<Startup> logger)
    {
        _logger = logger;
    }

    public void ConfigureServices(IServiceCollection services)
    {

        services.AddLogging(log =>
        {
            log.AddApplicationInsights();
        });
        services.AddApplicationInsightsTelemetry();
        _logger.LogError("something");
    }
}

appsettings.json

"Logging": {
  "ApplicationInsights": {
    "LogLevel": {
      "Default": "Information"
    }
  },
  "logLevel": { "default": "Information" }
}

參考ASP.NET Core 中的 App 啟動

使用通用主機(IHostBuilder)時,只能將以下服務類型注入到啟動構造函數中:

  • 網絡主機環境
  • 主機環境
  • 配置

... 大多數服務在調用Configure方法之前不可用。

由於您實際上是在Startup本身內注冊記錄器,因此在實例化類時它不會准備好。

考慮將記錄器注冊移出,以便在Startup初始化時它就在那里。

public class Program {
    public static void Main(string[] args) {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureServices((context, services) => {
                services.AddApplicationInsightsTelemetry();
            })
            .ConfigureLogging(logging => {
                logging.AddApplicationInsights();
            })
            .ConfigureWebHostDefaults(webBuilder => {
                webBuilder.UseStartup<Startup>(); 
            });
}

Startup ,現在應該可以使用所需的日志記錄行為

public class Startup {
    private readonly ILogger _logger;

    public Startup(ILogger<Startup> logger) {
        _logger = logger;
    }

    public void ConfigureServices(IServiceCollection services) {

        _logger.LogError("something");
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM