ASP.NET Core 整合測試中通過 Serilog 向控制檯輸出日誌

dudu發表於2018-05-29

日誌是程式設計師的雷達,不僅在生產環境中需要,在整合測試環境中也需要,可以在持續整合失敗後幫助定位問題。與生產環境不同,在整合測試環境中使用控制檯輸出日誌更方便,這樣可以通過持續整合 runner 執行 job 時的輸出看到日誌。

這篇博文簡單記錄一下我們在  asp.net core 整合測試中通過 serilog 向控制檯輸出日誌的實現程式碼

var outputTemplate = "{Timestamp:HH:mm:ss.fff} [{Level:u3}] {SourceContext}{NewLine}{Message}{NewLine}{Exception}";

Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Information()
    .MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Debug)
    .WriteTo.Console(outputTemplate: outputTemplate)
    .CreateLogger();

IWebHostBuilder webHostBuilder = WebHost.CreateDefaultBuilder()
    .UseStartup<Startup>()
    .UseSerilog();

TestServer = new TestServer(webHostBuilder);

定義 outputTemplate 是為了新增 {SourceContext} 以實現在日誌中記錄類名,詳見 .net core中如何讓Serilog日誌像控制檯日誌那樣顯示類名 

WriteTo.Console 就是讓 serilog 向控制檯輸出日誌。

所需的 nuget 包:

<ItemGroup>   
  <PackageReference Include="Serilog" Version="2.7.1" />
  <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" />
  <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" />
</ItemGroup>

相關文章