簡體   English   中英

如何將日志記錄數據發送到圖書館項目的應用洞察力

[英]how to send logging data to app insights from a library project

我有一個 as.net core 2 web 應用程序,它依賴於“業務”項目來處理一些邏輯。 我正在嘗試設置 web 應用程序,以便將其 ILogger 日志發送到 App Insights。 如果我從其 Controller 操作中調用 logger.Log 方法,我可以正常發送日志。 但是,當調用屬於同一解決方案的另一個項目中的類時,我有一個 ILogger 實例並從那里進行日志記錄,它不會向 App Insights 發送任何日志數據。 我在這里錯過了什么嗎? 我可以想象,如果我在 web 應用程序中正確配置了日志記錄和應用程序見解,我可以從那里調用任何其他庫,並且日志記錄數據將被正常發送。

  1. 方法 1 -您必須在 Startup 的核心 API 項目中注冊您的業務邏輯 class; 類似於下面的東西
builder.Services.AddScoped<IMyClass, MyClass>();

並且您將必須定義一個構造函數,該構造函數在您的業務中采用 ILogger 實例 class; 像下面這樣的東西

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

// _logger.LogInformation("Hi from MyClass"); e.g. logging

這種方法意味着 ILogger 將與所有必需的設置一起注入到您的業務庫中。

  1. 方法 2 -您必須從此處在您的業務庫項目Microsoft.ApplicationInsights.WorkerService中安裝 AppInsights worker package

然后,您將必須編寫用於登錄 AppInsights 的代碼,如下所示

var serviceCollection = new ServiceCollection();

            serviceCollection.AddApplicationInsightsTelemetryWorkerService(options => options.ConnectionString = "my-key");
            serviceCollection.AddLogging(builder => builder
            .AddFilter<Microsoft.Extensions.Logging.ApplicationInsights.ApplicationInsightsLoggerProvider>("", LogLevel.Information)
            .AddFilter("Default", LogLevel.Information)
            .AddFilter("Microsoft", LogLevel.Warning)
            .AddFilter("System", LogLevel.Warning)
            );

            var serviceProvider = serviceCollection.BuildServiceProvider();
            var loggerFactory = serviceProvider.GetService<ILoggerFactory>();
            var telemetryClient = serviceProvider.GetService<TelemetryClient>();
            var logger = loggerFactory.CreateLogger("my-logger");
            logger.LogInformation("Hi from MyClass");
            // flush and sleep at the end, before returning to the caller so that no messages are lost
            telemetryClient.Flush(); 
            System.Threading.Thread.Sleep(5000);

對於這種方法,您的業務庫項目中需要Microsoft.Extensions.DependencyInjectionMicrosoft.Extensions.Logging包。 這種方法意味着您將獨立編寫 appinsights 日志記錄到您的 lib 項目。

暫無
暫無

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

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