日誌是程式設計師的雷達,不僅在生產環境中需要,在整合測試環境中也需要,可以在持續整合失敗後幫助定位問題。與生產環境不同,在整合測試環境中使用控制檯輸出日誌更方便,這樣可以通過持續整合 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>