Integrate Serilog sinks with DotNet Core.
The demo app includes how to setup Serilog logging in ASP Net Core project. Serilog provides diagnostic logging to files, the console, and elsewhere. It is easy to set up, has a clean API, and is portable between recent .NET platforms. Unlike other logging libraries, Serilog is built with powerful structured event data in mind.
Serilog sinks can be defined through configuration in the appsettings.json
file.
Serilog.AspNetCore v3.1.1
Packaged with depenencies listed below,Serilog v2.8.0 Serilog.Extensions.Hosting v3.0.0 Serilog.Settings.Configuration v3.1.0 Serilog.Sinks.Console v3.1.1 Serilog.Sinks.Debug v1.0.1 Serilog.Sinks.File v4.0.0
-
Add below set of Serilog section
"Serilog": { "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File", "Serilog.Sinks.Debug" ], "MinimumLevel": "Error", "WriteTo": [ { "Name": "Console", "Args": { "theme": "Serilog.Sinks.SystemConsole.Themes.AnsiConsoleTheme::Code, Serilog.Sinks.Console", "outputTemplate": "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} <s:{SourceContext}>{NewLine}{Exception}", "formatter": "Serilog.Formatting.Compact.RenderedCompactJsonFormatter, Serilog.Formatting.Compact" } }, { "Name": "File", "Args": { "path": "Logs\\serilog-error.txt", "rollingInterval": "Day", "formatter": "Serilog.Formatting.Compact.RenderedCompactJsonFormatter, Serilog.Formatting.Compact" } }, { "Name": "Debug", "Args": { "formatter": "Serilog.Formatting.Compact.RenderedCompactJsonFormatter, Serilog.Formatting.Compact" } } ], "Enrich": [ "FromLogContext" ], "Properties": { "Application": "Serilog Logger" } }
-
In
Program.cs
, read Serilog configuration fromappsettings.json
and buildILogger
.public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureAppConfiguration((builderContext, config) => config.SetBasePath(builderContext.HostingEnvironment.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)) .UseSerilog((hostBuilderContext, loggerConfiguration) => { var configuration = hostBuilderContext.Configuration; loggerConfiguration.ReadFrom.Configuration(configuration); }) .ConfigureWebHostDefaults(webBuilder => webBuilder.UseStartup<Startup>());
Array of Serilog sinks used. In the demo app we are logging to Console, File, Debug.
"Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File", "Serilog.Sinks.Debug" ]
Includes the minimum log level. Values include Verbose, Debug, Info, Warning, Error, Fatal.
"MinimumLevel": "Error"
Array of logger sinks and configurations, along additional parameters.
"WriteTo": [
{
"Name": "Console",
"Args": {
"theme": "Serilog.Sinks.SystemConsole.Themes.AnsiConsoleTheme::Code, Serilog.Sinks.Console",
"outputTemplate": "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} <s:{SourceContext}>{NewLine}{Exception}",
"formatter": "Serilog.Formatting.Compact.RenderedCompactJsonFormatter, Serilog.Formatting.Compact"
}
},
{
"Name": "File",
"Args": {
"path": "Logs\\serilog-error.txt",
"rollingInterval": "Day",
"formatter": "Serilog.Formatting.Compact.RenderedCompactJsonFormatter, Serilog.Formatting.Compact"
}
},
{
"Name": "Debug",
"Args": {
"formatter": "Serilog.Formatting.Compact.RenderedCompactJsonFormatter, Serilog.Formatting.Compact"
}
}
]
Log events can be enriched with properties in various ways. A number of pre-built enrichers are provided as Nugets.
"Enrich": [ "FromLogContext" ]
Addition details that go in as part of Serilog log context are defined here.
"Properties": {
"Application": "Serilog Logger"
}
Serilog.AspNetCore
Serilog.Settings.Configuration
Serilog.Sinks.Console
Serilog.Sinks.File
Serilog.Sinks.Debug
Serilog.Formatting.Compact