Using .Net core default logger to log system events in production environment quite often can complicate things when attempting to aggregate and analise logs from multiple services via log analysers such as Sumo Logic.

Default Logger console writes are easy to read but basically become useless when thousands of messages are being collected into centralised analysis dashboard.

Standard logger

Serilog library on the other hand allows for structured event logging.
Also, with the help of various extensions and segregation of settings for dev and prod environment it possible to output coloured logs for ease of reading in IDE and de-serialise log message with JSON for improved data analysis.

IDE console Link to heading

ide console

Production console Link to heading

Prod console

Setting up Serilog Link to heading

I use following nuget packages

  • Serilog (main package)
  • Serilog.AspNetCore (NetCore Adapter)
  • Serilog.Sinks.Console (sink that writes log events to the console)
  • Serilog.Settings.Configuration (Extension adapter for using appsettings.json)

some code omitted for brevity

Program.cs Link to heading
Startup.cs Link to heading

It is safe to remove logging section from all appsettings.%ENV%.json files, Serilog has its separate overrides

appsettings.json Link to heading
appsettings.Development.json Link to heading
appsettings.Production.json Link to heading
Sample use in ClazzService Link to heading