add serilog packages
dotnet add package serilog.aspnetcore
dotnet add package Serilog.Sinks.Console
add serilog support
using Serilog;
using Serilog.Formatting.Json;
ServiceCollection services = new ServiceCollection();
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.Enrich.FromLogContext()
.WriteTo.Console(new JsonFormatter())
.CreateLogger();
services.AddLogging(logBuilder => {
// logBuilder.AddNLog(); // add nlog support
logBuilder.AddSerilog();
});
// test with Serilog
int itemNumber = 123, itemCount = 222;
Log.Debug("Processing item {ItemNumber} of {ItemCount}", itemNumber, itemCount);
use dotnet core ILogger
class TestController
{
// IOptions:
// IOptionsSnapshot:
// IOptionsMonitor:
private IOptionsSnapshot<Config> optConfig { get; }
private ILogger<TestController> logger { get; }
public TestController(IOptionsSnapshot<Config> config, ILogger<TestController> logger)
{
optConfig = config;
this.logger = logger;
}
public void Test()
{
logger.LogInformation("enter Test");
logger.LogDebug("can you see me?");
System.Console.WriteLine(optConfig.Value);
logger.LogInformation("leave Test");
}
}
structured log output
{"Timestamp":"2022-01-17T21:05:01.8240220+11:00","Level":"Debug","MessageTemplate":"Processing item {ItemNumber} of {ItemCount}","Properties":{"ItemNumber":123,"ItemCount":222}}
{"Timestamp":"2022-01-17T21:05:01.9875653+11:00","Level":"Information","MessageTemplate":"enter Test","Properties":{"SourceContext":"consoleApp01.Controllers.TestController"}}
{"Timestamp":"2022-01-17T21:05:01.9909203+11:00","Level":"Debug","MessageTemplate":"can you see me?","Properties":{"SourceContext":"consoleApp01.Controllers.TestController"}}
name:, age:0, proxy:
{"Timestamp":"2022-01-17T21:05:02.0006510+11:00","Level":"Information","MessageTemplate":"leave Test","Properties":{"SourceContext":"consoleApp01.Controllers.TestController"}}