[英]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" }
}
使用通用主機(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.