Microsoft.Extensions.Logging.Abstractions 9.0.16

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.

Showing the top 20 packages that depend on Microsoft.Extensions.Logging.Abstractions.

Packages Downloads
MassTransit
MassTransit is a message-based distributed application framework for .NET http://masstransit-project.com
535
MassTransit.Extensions.Hosting
MassTransit configuration extensions using Microsoft.Extensions.Hosting.IHostedService and Microsoft.Extensions.DependencyInjection.
227
Microsoft.Extensions.Caching.Memory
In-memory cache implementation of Microsoft.Extensions.Caching.Memory.IMemoryCache.
227
Microsoft.Extensions.Caching.Memory
In-memory cache implementation of Microsoft.Extensions.Caching.Memory.IMemoryCache.
250
Microsoft.Extensions.Caching.Memory
In-memory cache implementation of Microsoft.Extensions.Caching.Memory.IMemoryCache.
296
Microsoft.Extensions.Hosting.Abstractions
Hosting and startup abstractions for applications.
374
Microsoft.Extensions.Hosting.Abstractions
.NET Core hosting and startup abstractions for applications.
273
Microsoft.Extensions.Hosting.Abstractions
.NET Core hosting and startup abstractions for applications.
466
Microsoft.Extensions.Logging
Logging infrastructure default implementation for Microsoft.Extensions.Logging.
234
Microsoft.Extensions.Logging
Logging infrastructure default implementation for Microsoft.Extensions.Logging.
288
Microsoft.Extensions.Logging
Logging infrastructure default implementation for Microsoft.Extensions.Logging.
314
Microsoft.Extensions.Logging
Logging infrastructure default implementation for Microsoft.Extensions.Logging.
329
Microsoft.Extensions.Logging
Logging infrastructure default implementation for Microsoft.Extensions.Logging.
413
Microsoft.Extensions.Logging
Logging infrastructure default implementation for Microsoft.Extensions.Logging. When using NuGet 3.x this package requires at least version 3.4.
290
Microsoft.IdentityModel.Tokens
Includes types that provide support for SecurityTokens, Cryptographic operations: Signing, Verifying Signatures, Encryption.
449
Npgsql
Npgsql is the open source .NET data provider for PostgreSQL.
234
Npgsql
Npgsql is the open source .NET data provider for PostgreSQL.
304
Serilog.Extensions.Hosting
Serilog support for .NET Core logging in hosted services
231
StackExchange.Redis
High performance Redis client, incorporating both synchronous and asynchronous usage.
249
StackExchange.Redis
High performance Redis client, incorporating both synchronous and asynchronous usage.
309

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

Version Downloads Last updated
11.0.0-preview.4.26230.115 5 05/13/2026
11.0.0-preview.3.26207.106 17 04/14/2026
11.0.0-preview.2.26159.112 27 03/11/2026
11.0.0-preview.1.26104.118 35 02/11/2026
10.0.8 5 05/13/2026
10.0.7 20 04/21/2026
10.0.6 16 04/14/2026
10.0.5 29 03/13/2026
10.0.4 24 03/11/2026
10.0.3 30 02/11/2026
10.0.2 33 01/13/2026
10.0.1 57 12/10/2025
10.0.0 64 11/11/2025
10.0.0-rc.2.25502.107 76 10/15/2025
10.0.0-rc.1.25451.107 99 09/09/2025
10.0.0-preview.7.25380.108 81 08/13/2025
10.0.0-preview.6.25358.103 104 07/16/2025
10.0.0-preview.5.25277.114 111 06/08/2025
10.0.0-preview.4.25258.110 125 05/15/2025
10.0.0-preview.3.25171.5 118 04/13/2025
10.0.0-preview.2.25163.2 130 04/01/2025
10.0.0-preview.1.25080.5 130 04/01/2025
9.0.16 5 05/13/2026
9.0.15 17 04/14/2026
9.0.14 24 03/10/2026
9.0.13 31 02/11/2026
9.0.12 32 01/13/2026
9.0.11 52 11/11/2025
9.0.10 96 10/15/2025
9.0.9 92 09/09/2025
9.0.8 135 08/07/2025
9.0.7 108 07/09/2025
9.0.6 130 06/11/2025
9.0.5 109 05/17/2025
9.0.4 103 04/09/2025
9.0.3 126 03/25/2025
9.0.2 190 02/14/2025
9.0.1 105 02/08/2025
9.0.0 245 11/14/2024
9.0.0-rc.2.24473.5 120 10/19/2024
9.0.0-rc.1.24431.7 118 10/20/2024
9.0.0-preview.7.24405.7 140 08/22/2024
9.0.0-preview.6.24327.7 163 07/23/2024
9.0.0-preview.5.24306.7 127 07/21/2024
9.0.0-preview.4.24266.19 140 07/22/2024
9.0.0-preview.3.24172.9 154 07/23/2024
9.0.0-preview.2.24128.5 147 07/23/2024
9.0.0-preview.1.24080.9 145 07/23/2024
8.0.3 123 03/29/2025
8.0.2 362 10/21/2024
8.0.1 197 06/27/2024
8.0.0 510 02/04/2024
8.0.0-rc.2.23479.6 135 07/23/2024
8.0.0-rc.1.23419.4 136 07/22/2024
8.0.0-preview.7.23375.6 138 07/23/2024
8.0.0-preview.6.23329.7 142 07/23/2024
8.0.0-preview.5.23280.8 126 07/14/2024
8.0.0-preview.4.23259.5 142 07/23/2024
8.0.0-preview.3.23174.8 136 07/23/2024
8.0.0-preview.2.23128.3 130 07/23/2024
8.0.0-preview.1.23110.8 140 07/23/2024
7.0.1 139 07/22/2024
7.0.0 208 02/04/2024
7.0.0-rc.2.22472.3 145 07/23/2024
7.0.0-rc.1.22426.10 157 07/23/2024
7.0.0-preview.7.22375.6 128 07/19/2024
7.0.0-preview.6.22324.4 141 07/23/2024
7.0.0-preview.5.22301.12 157 07/23/2024
7.0.0-preview.4.22229.4 149 07/23/2024
7.0.0-preview.3.22175.4 132 07/20/2024
7.0.0-preview.2.22152.2 150 07/22/2024
7.0.0-preview.1.22076.8 135 07/23/2024
6.0.4 140 07/23/2024
6.0.3 127 07/23/2024
6.0.2 138 02/15/2024
6.0.2-mauipre.1.22102.15 111 01/02/2025
6.0.2-mauipre.1.22054.8 131 08/26/2024
6.0.1 129 07/17/2024
6.0.0 395 02/04/2024
6.0.0-rc.2.21480.5 127 07/23/2024
6.0.0-rc.1.21451.13 158 07/20/2024
6.0.0-preview.7.21377.19 141 07/23/2024
6.0.0-preview.6.21352.12 135 07/23/2024
6.0.0-preview.5.21301.5 125 07/23/2024
6.0.0-preview.4.21253.7 131 07/19/2024
6.0.0-preview.3.21201.4 141 07/23/2024
6.0.0-preview.2.21154.6 138 07/22/2024
6.0.0-preview.1.21102.12 131 07/18/2024
5.0.0 248 02/04/2024
5.0.0-rc.2.20475.5 136 07/14/2024
5.0.0-rc.1.20451.14 105 07/23/2024
5.0.0-preview.8.20407.11 130 07/23/2024
5.0.0-preview.7.20364.11 134 07/23/2024
5.0.0-preview.6.20305.6 154 07/23/2024
5.0.0-preview.5.20278.1 143 07/23/2024
5.0.0-preview.4.20251.6 139 07/23/2024
5.0.0-preview.3.20215.2 123 07/23/2024
5.0.0-preview.2.20160.3 128 07/23/2024
5.0.0-preview.1.20120.4 117 07/23/2024
3.1.32 127 07/23/2024
3.1.31 135 07/23/2024
3.1.30 129 07/18/2024
3.1.29 131 07/22/2024
3.1.28 148 07/23/2024
3.1.27 136 07/23/2024
3.1.26 120 07/23/2024
3.1.25 141 07/22/2024
3.1.24 144 07/23/2024
3.1.23 120 07/23/2024
3.1.22 129 07/23/2024
3.1.21 121 07/21/2024
3.1.20 150 07/23/2024
3.1.19 133 07/23/2024
3.1.18 609 02/04/2024
3.1.17 157 07/23/2024
3.1.16 137 07/23/2024
3.1.15 138 07/23/2024
3.1.14 142 07/23/2024
3.1.13 125 07/23/2024
3.1.12 135 07/23/2024
3.1.11 127 07/23/2024
3.1.10 133 07/23/2024
3.1.9 129 07/23/2024
3.1.8 276 02/04/2024
3.1.7 146 07/23/2024
3.1.6 146 02/28/2024
3.1.5 139 07/19/2024
3.1.4 131 07/23/2024
3.1.3 133 07/23/2024
3.1.2 145 07/23/2024
3.1.1 137 07/23/2024
3.1.0 132 07/23/2024
3.1.0-preview3.19553.2 145 07/21/2024
3.1.0-preview2.19525.4 142 07/23/2024
3.1.0-preview1.19506.1 141 07/23/2024
3.0.3 148 07/23/2024
3.0.2 134 07/23/2024
3.0.1 139 07/23/2024
3.0.0 132 07/23/2024
3.0.0-rc1.19456.10 140 07/23/2024
3.0.0-preview9.19423.4 133 07/23/2024
3.0.0-preview8.19405.4 117 07/23/2024
3.0.0-preview7.19362.4 132 07/23/2024
3.0.0-preview6.19304.6 125 07/23/2024
3.0.0-preview5.19227.9 139 07/14/2024
3.0.0-preview4.19216.2 130 07/23/2024
3.0.0-preview3.19153.1 131 07/18/2024
3.0.0-preview.19074.2 137 07/23/2024
3.0.0-preview.18572.1 126 07/20/2024
2.2.0 189 02/05/2024
2.2.0-preview3-35497 156 07/23/2024
2.2.0-preview2-35157 127 07/21/2024
2.2.0-preview1-35029 144 07/22/2024
2.1.1 685 02/04/2024
2.1.0 160 07/23/2024
2.1.0-rc1-final 125 07/23/2024
2.1.0-preview2-final 127 07/23/2024
2.1.0-preview1-final 134 07/23/2024
2.0.2 138 07/23/2024
2.0.1 146 07/21/2024
2.0.0 177 02/05/2024
2.0.0-preview2-final 123 07/23/2024
2.0.0-preview1-final 135 07/14/2024
1.1.2 117 07/23/2024
1.1.1 144 07/18/2024
1.1.0 127 07/21/2024
1.1.0-preview1-final 125 07/23/2024
1.0.2 134 07/23/2024
1.0.1 139 07/22/2024
1.0.0 124 07/23/2024
1.0.0-rc2-final 120 07/22/2024
1.0.0-rc1-final 129 07/19/2024