using System.Collections.Generic;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using var services = new ServiceCollection()
.AddLogging(builder => builder.AddJsonConsole(options => {
options.IncludeScopes = true;
options.JsonWriterOptions = new JsonWriterOptions { Indented = true };
var myClass1 = services.GetRequiredService<MyClass>();
var myClass2 = services.GetRequiredService<MyClass>();
public class MyClass : IDisposable
private static int instanceCount = 0;
private ILogger<MyClass> _logger;
private IDisposable _loggingScope;
public MyClass(ILogger<MyClass> logger)
_instance = ++instanceCount;
_loggingScope = _logger.BeginScope(new Dictionary<string, object>
["Instance"] = _instance,
["Source"] = "Constructor"
_logger.LogInformation("Log from constructor");
using(_logger.BeginScope(new Dictionary<string, object>
["Instance"] = _instance,
_logger.LogInformation("Log from MyMethod");
_loggingScope?.Dispose();