簡體   English   中英

帶有 AppInsights 的 SeriLog 不寫入 AppInsights

[英]SeriLog with AppInsights not writing to AppInsights

我正在使用 Serilog 和 .NET CORE 2.0 項目的 appinsights 編寫日志。

我已將 SeriLog 配置如下,

var loggerConfiguration = new LoggerConfiguration()
                .ReadFrom.Configuration(configuration)
                .Enrich.FromLogContext()
                .Enrich.WithDemystifiedStackTraces();

並按如下方式寫入 appInsights,

 loggerConfiguration = loggerConfiguration.WriteTo.ApplicationInsightsTraces(appInsightsIntrumentationKey, serilogLevel)
.WriteTo.RollingFile(Path.Combine(contentRoot, "Logs/log-{Date}.log"), retainedFileCountLimit: 14);

我看到在日志文件夾內生成的日志,但我在 appInsights 中沒有看到任何內容。

我在做什么錯?

確保在 Serilog ApplicationInsights 接收器之前安裝 SDK。 如果您沒有 SDK,它似乎可以工作,但您最終將在 ApplicationInsights 中沒有任何消息。

https://www.nuget.org/packages/Microsoft.ApplicationInsights.AspNetCore/

我已經嘗試按照文檔進行操作

    "ApplicationInsights": {
        "InstrumentationKey": "7334f234-42c9-4a1f-b35d-4969d48020d4",
        "EnableAdaptiveSampling": false,
        "EnablePerformanceCounterCollectionModule": false
    },
    "Serilog": {
        "WriteTo": [
            { "Name": "Console" },
            {
                "Name": "ApplicationInsights",
                "Args": {
                    "instrumentationKey": "7334f234-42c9-4a1f-b35d-4969d48020d4",
                    "telemetryConverter": "Serilog.Sinks.ApplicationInsights.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter, Serilog.Sinks.ApplicationInsights"
                }
            }
        ]
    }

它適用於 Azure 應用服務和開發計算機

程序.cs:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .UseSerilog() // added to embed serilog
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });

啟動文件

public Startup(IConfiguration configuration)
{
    Configuration = configuration;
    Log.Logger = new LoggerConfiguration().ReadFrom.Configuration(Configuration).CreateLogger();
}

樣品控制器:

    [Route("[controller]")]
    [ApiController]
    public class BadValuesController : ControllerBase
    {
        private readonly ILogger<BadValuesController> _logger;
        public BadValuesController(ILogger<BadValuesController> logger)
        {
            _logger = logger;
            _logger.LogDebug("ctor");
        }

        [HttpGet]
        public IEnumerable<WeatherForecast> GetData()
        {
            _logger.LogWarning("going to raise 6 from local app");
            throw new NotImplementedException();
        }
    }

由於沒有services.AddApplicationInsightsTelemetry();不需要重建應用程序services.AddApplicationInsightsTelemetry(); 被執行。 您可以將dll文件復制到您的應用程序並調整配置以打開 AppInsights 登錄。

但是,如果沒有源代碼修改,則您沒有TelemetryClient實例 所以你必須等待一段時間才能選擇應用洞察日志。

我已經安裝了 NuGet 包

  • Microsoft.ApplicationInsights.AspNetCore
  • Serilog.AspNetCore
  • Serilog.Enrichers.Environment
  • Serilog.Enrichers.Process
  • Serilog.Sinks.ApplicationInsight

暫無
暫無

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

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