[英]Application Insights' Logs Not Writing to Traces Log
我正在按照此頁Application Insights Instructions將 Application Insights (AI) 添加到我的 web API 服務中。 我設法讓我的服務連接到 AI,並且我能夠看到我的服務何時執行發布、獲取等。我還通過我的服務進行了日志調用,但沒有一個被寫入我的 AI 的 Traces 日志。
我確保設置了我的 Startup.cs 和 appsettings.json 文件以包含在整個服務中運行 AI 所需的新代碼,並且日志數據需要對 AI 抓取日志進行調試和升級。
啟動.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddApplicationInsightsTelemetry();
}
appsettings.json
記錄示例
public async Task ProcessQueueAsync(dBData dbContext)
{
// _logger is of type ILogger<[INSERT CLASS NAME]>
_logger.LogDebug("This is a test log by Lotzi11.");
await ProcessQueueAsyncSingle(dbContext, CancellationToken.None);
}
有人可以幫我弄清楚為什么我的日志沒有被發送到 AI 嗎?
你的代碼配置和appsettings.json
是正確的。 根據您在我身邊的設置,我可以在 AI 中看到這些日志。
您應該知道的一件事是,這些數據可能需要幾分鍾才能到達 AI 服務器。 請等待幾分鍾,如 5 分鍾或更長時間,然后從 azure 門戶 -> 應用洞察再次查詢這些數據。
這是檢查數據是否發送到 AI 的簡單方法。 在visual studio中,運行項目時,可以在visual studio output window中搜索日志。 如果您可以在那里找到日志,那么應該將其發送給 AI:
在 Visual Studio output window 中搜索:
如果您仍然無法在 AI 中看到這些日志,您還應該檢查您是否在代碼中設置了filter
或sampling
等內容。
當我在解決我的問題時,我發現我的公司使用 Serilog 來處理日志記錄,所以我不得不改變我的項目,以便 Serilog 也將日志發送給 AI。 我使用以下頁面serilog-sinks-applicationinsights修改了我的代碼。
這讓我意識到,即使我按照微軟關於設置 AI 的說明進行操作,我的 ILogger class 也沒有正確設置來處理向 AI 發送日志。 為了解決這個問題,我更改了 Startup.cs 的構造函數:
public Startup(IHostEnvironment environment, IConfiguration configuration)
{
var env = new Environment(environment.EnvironmentName);
_systemConfiguration = new SystemConfiguration(env, configuration);
_systemConfiguration.Validate();
Log.Logger = new LoggerConfiguration().Enrich.FromLogContext().WriteTo.ApplicationInsights(_systemConfiguration.BaseConfiguration["APPINSIGHTS_INSTRUMENTATIONKEY"], TelemetryConverter.Traces).CreateLogger();
using var provider = new SerilogLoggerProvider(Log.Logger);
_logger = provider.CreateLogger(nameof(Startup));
}
將 AI 添加到 Log.Logger 后,我的日志開始顯示在我的 AI 頁面中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.