Microsoft.Extensions.Logging.Abstractions 9.0.0-preview.5.24306.7

About

Microsoft.Extensions.Logging.Abstractions provides abstractions of logging. Interfaces defined in this package are implemented by classes in Microsoft.Extensions.Logging and other logging packages.

This package includes a logging source generator that produces highly efficient and optimized code for logging message methods.

Key Features

  • Define main logging abstraction interfaces like ILogger, ILoggerFactory, ILoggerProvider, etc.

How to Use

Custom logger provider implementation example

using Microsoft.Extensions.Logging;

public sealed class ColorConsoleLogger : ILogger
{
    private readonly string _name;
    private readonly Func<ColorConsoleLoggerConfiguration> _getCurrentConfig;

    public ColorConsoleLogger(
        string name,
        Func<ColorConsoleLoggerConfiguration> getCurrentConfig) =>
        (_name, _getCurrentConfig) = (name, getCurrentConfig);

    public IDisposable? BeginScope<TState>(TState state) where TState : notnull => default!;

    public bool IsEnabled(LogLevel logLevel) =>
        _getCurrentConfig().LogLevelToColorMap.ContainsKey(logLevel);

    public void Log<TState>(
        LogLevel logLevel,
        EventId eventId,
        TState state,
        Exception? exception,
        Func<TState, Exception?, string> formatter)
    {
        if (!IsEnabled(logLevel))
        {
            return;
        }

        ColorConsoleLoggerConfiguration config = _getCurrentConfig();
        if (config.EventId == 0 || config.EventId == eventId.Id)
        {
            ConsoleColor originalColor = Console.ForegroundColor;

            Console.ForegroundColor = config.LogLevelToColorMap[logLevel];
            Console.WriteLine($"[{eventId.Id,2}: {logLevel,-12}]");

            Console.ForegroundColor = originalColor;
            Console.Write($"     {_name} - ");

            Console.ForegroundColor = config.LogLevelToColorMap[logLevel];
            Console.Write($"{formatter(state, exception)}");

            Console.ForegroundColor = originalColor;
            Console.WriteLine();
        }
    }
}

Create logs


// Worker class that uses logger implementation of teh interface ILogger<T>

public sealed class Worker : BackgroundService
{
    private readonly ILogger<Worker> _logger;

    public Worker(ILogger<Worker> logger) =>
        _logger = logger;

    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        while (!stoppingToken.IsCancellationRequested)
        {
            _logger.LogInformation("Worker running at: {time}", DateTimeOffset.UtcNow);
            await Task.Delay(1_000, stoppingToken);
        }
    }
}

Use source generator

public static partial class Log
{
    [LoggerMessage(
        EventId = 0,
        Level = LogLevel.Critical,
        Message = "Could not open socket to `{hostName}`")]
    public static partial void CouldNotOpenSocket(this ILogger logger, string hostName);
}

public partial class InstanceLoggingExample
{
    private readonly ILogger _logger;

    public InstanceLoggingExample(ILogger logger)
    {
        _logger = logger;
    }

    [LoggerMessage(
        EventId = 0,
        Level = LogLevel.Critical,
        Message = "Could not open socket to `{hostName}`")]
    public partial void CouldNotOpenSocket(string hostName);
}

Main Types

The main types provided by this library are:

  • Microsoft.Extensions.Logging.ILogger
  • Microsoft.Extensions.Logging.ILoggerProvider
  • Microsoft.Extensions.Logging.ILoggerFactory
  • Microsoft.Extensions.Logging.ILogger<TCategoryName>
  • Microsoft.Extensions.Logging.LogLevel
  • Microsoft.Extensions.Logging.Logger<T>
  • Microsoft.Extensions.Logging.LoggerMessage
  • Microsoft.Extensions.Logging.Abstractions.NullLogger

Additional Documentation

Microsoft.Extensions.Logging Microsoft.Extensions.Logging.Console Microsoft.Extensions.Logging.Debug Microsoft.Extensions.Logging.EventSource Microsoft.Extensions.Logging.EventLog Microsoft.Extensions.Logging.TraceSource

Feedback & Contributing

Microsoft.Extensions.Logging.Abstractions is released as open source under the MIT license. Bug reports and contributions are welcome at the GitHub repository.

No packages depend on Microsoft.Extensions.Logging.Abstractions.

https://go.microsoft.com/fwlink/?LinkID=799421

.NET Framework 4.6.2

.NET 8.0

.NET 9.0

.NET Standard 2.0

Version Downloads Last updated
10.0.2 0 1/13/2026
10.0.1 2 12/17/2025
10.0.0 1 12/18/2025
10.0.0-rc.2.25502.107 1 12/18/2025
10.0.0-rc.1.25451.107 1 12/18/2025
10.0.0-preview.7.25380.108 1 12/18/2025
10.0.0-preview.6.25358.103 1 12/18/2025
10.0.0-preview.5.25277.114 1 12/18/2025
10.0.0-preview.4.25258.110 1 12/18/2025
10.0.0-preview.3.25171.5 1 12/18/2025
10.0.0-preview.2.25163.2 1 12/18/2025
10.0.0-preview.1.25080.5 1 12/18/2025
9.0.12 0 1/13/2026
9.0.11 1 12/18/2025
9.0.10 1 12/18/2025
9.0.9 1 12/18/2025
9.0.8 1 12/18/2025
9.0.7 1 12/18/2025
9.0.6 1 12/18/2025
9.0.5 1 12/18/2025
9.0.4 1 12/18/2025
9.0.3 1 12/18/2025
9.0.2 1 12/18/2025
9.0.1 1 12/18/2025
9.0.0 1 12/18/2025
9.0.0-rc.2.24473.5 1 12/18/2025
9.0.0-rc.1.24431.7 1 12/18/2025
9.0.0-preview.7.24405.7 1 12/18/2025
9.0.0-preview.6.24327.7 1 12/18/2025
9.0.0-preview.5.24306.7 1 12/18/2025
9.0.0-preview.4.24266.19 1 12/18/2025
9.0.0-preview.3.24172.9 1 12/18/2025
9.0.0-preview.2.24128.5 1 12/18/2025
9.0.0-preview.1.24080.9 1 12/18/2025
8.0.3 1 12/18/2025
8.0.2 1 12/18/2025
8.0.1 1 12/18/2025
8.0.0 1 12/18/2025
8.0.0-rc.2.23479.6 1 12/18/2025
8.0.0-rc.1.23419.4 1 12/18/2025
8.0.0-preview.7.23375.6 1 12/18/2025
8.0.0-preview.6.23329.7 1 12/18/2025
8.0.0-preview.5.23280.8 1 12/18/2025
8.0.0-preview.4.23259.5 1 12/18/2025
8.0.0-preview.3.23174.8 1 12/18/2025
8.0.0-preview.2.23128.3 1 12/18/2025
8.0.0-preview.1.23110.8 1 12/18/2025
7.0.1 1 12/18/2025
7.0.0 1 12/18/2025
7.0.0-rc.2.22472.3 1 12/18/2025
7.0.0-rc.1.22426.10 1 12/18/2025
7.0.0-preview.7.22375.6 1 12/18/2025
7.0.0-preview.6.22324.4 1 12/18/2025
7.0.0-preview.5.22301.12 1 12/18/2025
7.0.0-preview.4.22229.4 1 12/18/2025
7.0.0-preview.3.22175.4 1 12/18/2025
7.0.0-preview.2.22152.2 1 12/18/2025
7.0.0-preview.1.22076.8 1 12/18/2025
6.0.4 1 12/18/2025
6.0.3 1 12/18/2025
6.0.2 1 12/18/2025
6.0.1 1 12/18/2025
6.0.0 1 12/18/2025
6.0.0-rc.2.21480.5 1 12/18/2025
6.0.0-rc.1.21451.13 1 12/18/2025
6.0.0-preview.7.21377.19 1 12/18/2025
6.0.0-preview.6.21352.12 1 12/18/2025
6.0.0-preview.5.21301.5 1 12/18/2025
6.0.0-preview.4.21253.7 1 12/18/2025
6.0.0-preview.3.21201.4 1 12/18/2025
6.0.0-preview.2.21154.6 1 12/18/2025
6.0.0-preview.1.21102.12 1 12/18/2025
5.0.0 1 12/18/2025
5.0.0-rc.2.20475.5 1 12/18/2025
5.0.0-rc.1.20451.14 1 12/18/2025
5.0.0-preview.8.20407.11 1 12/18/2025
5.0.0-preview.7.20364.11 1 12/18/2025
5.0.0-preview.6.20305.6 1 12/18/2025
5.0.0-preview.5.20278.1 1 12/18/2025
5.0.0-preview.4.20251.6 1 12/18/2025
5.0.0-preview.3.20215.2 1 12/18/2025
5.0.0-preview.2.20160.3 1 12/18/2025
5.0.0-preview.1.20120.4 1 12/18/2025
3.1.32 1 12/18/2025
3.1.31 1 12/18/2025
3.1.30 1 12/18/2025
3.1.29 1 12/18/2025
3.1.28 1 12/18/2025
3.1.27 1 12/18/2025
3.1.26 1 12/18/2025
3.1.25 1 12/18/2025
3.1.24 1 12/18/2025
3.1.23 1 12/18/2025
3.1.22 1 12/18/2025
3.1.21 1 12/18/2025
3.1.20 1 12/18/2025
3.1.19 1 12/18/2025
3.1.18 1 12/18/2025
3.1.17 1 12/18/2025
3.1.16 1 12/18/2025
3.1.15 1 12/18/2025
3.1.14 1 12/18/2025
3.1.13 1 12/18/2025
3.1.12 1 12/18/2025
3.1.11 1 12/18/2025
3.1.10 1 12/18/2025
3.1.9 1 12/18/2025
3.1.8 1 12/18/2025
3.1.7 1 12/18/2025
3.1.6 1 12/18/2025
3.1.5 1 12/18/2025
3.1.4 1 12/18/2025
3.1.3 1 12/18/2025
3.1.2 1 12/18/2025
3.1.1 1 12/18/2025
3.1.0 1 12/18/2025
3.1.0-preview3.19553.2 1 12/18/2025
3.1.0-preview2.19525.4 1 12/18/2025
3.1.0-preview1.19506.1 1 12/18/2025
3.0.3 1 12/18/2025
3.0.2 1 12/18/2025
3.0.1 1 12/18/2025
3.0.0 1 12/18/2025
3.0.0-rc1.19456.10 1 12/18/2025
3.0.0-preview9.19423.4 1 12/18/2025
3.0.0-preview8.19405.4 1 12/18/2025
3.0.0-preview7.19362.4 1 12/18/2025
3.0.0-preview6.19304.6 1 12/18/2025
3.0.0-preview5.19227.9 1 12/18/2025
3.0.0-preview4.19216.2 1 12/18/2025
3.0.0-preview3.19153.1 1 12/18/2025
3.0.0-preview.19074.2 1 12/18/2025
3.0.0-preview.18572.1 1 12/18/2025
2.2.0 1 12/18/2025
2.2.0-preview3-35497 1 12/18/2025
2.2.0-preview2-35157 1 12/18/2025
2.2.0-preview1-35029 1 12/18/2025
2.1.1 1 12/18/2025
2.1.0 1 12/18/2025
2.1.0-rc1-final 1 12/18/2025
2.1.0-preview2-final 1 12/18/2025
2.1.0-preview1-final 1 12/18/2025
2.0.2 1 12/18/2025
2.0.1 1 12/18/2025
2.0.0 1 12/18/2025
2.0.0-preview2-final 1 12/18/2025
2.0.0-preview1-final 1 12/18/2025
1.1.2 1 12/18/2025
1.1.1 1 12/18/2025
1.1.0 1 12/18/2025
1.1.0-preview1-final 1 12/18/2025
1.0.2 1 12/18/2025
1.0.1 1 12/18/2025
1.0.0 1 12/18/2025
1.0.0-rc2-final 1 12/18/2025
1.0.0-rc1-final 1 12/18/2025