Microsoft.Extensions.Logging.Abstractions 10.0.9

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
539
MassTransit.Extensions.Hosting
MassTransit configuration extensions using Microsoft.Extensions.Hosting.IHostedService and Microsoft.Extensions.DependencyInjection.
235
Microsoft.Extensions.Caching.Memory
In-memory cache implementation of Microsoft.Extensions.Caching.Memory.IMemoryCache.
233
Microsoft.Extensions.Caching.Memory
In-memory cache implementation of Microsoft.Extensions.Caching.Memory.IMemoryCache.
256
Microsoft.Extensions.Caching.Memory
In-memory cache implementation of Microsoft.Extensions.Caching.Memory.IMemoryCache.
303
Microsoft.Extensions.Hosting.Abstractions
Hosting and startup abstractions for applications.
377
Microsoft.Extensions.Hosting.Abstractions
.NET Core hosting and startup abstractions for applications.
276
Microsoft.Extensions.Hosting.Abstractions
.NET Core hosting and startup abstractions for applications.
469
Microsoft.Extensions.Logging
Logging infrastructure default implementation for Microsoft.Extensions.Logging.
238
Microsoft.Extensions.Logging
Logging infrastructure default implementation for Microsoft.Extensions.Logging.
293
Microsoft.Extensions.Logging
Logging infrastructure default implementation for Microsoft.Extensions.Logging.
323
Microsoft.Extensions.Logging
Logging infrastructure default implementation for Microsoft.Extensions.Logging.
333
Microsoft.Extensions.Logging
Logging infrastructure default implementation for Microsoft.Extensions.Logging.
418
Microsoft.Extensions.Logging
Logging infrastructure default implementation for Microsoft.Extensions.Logging. When using NuGet 3.x this package requires at least version 3.4.
298
Microsoft.IdentityModel.Tokens
Includes types that provide support for SecurityTokens, Cryptographic operations: Signing, Verifying Signatures, Encryption.
460
Npgsql
Npgsql is the open source .NET data provider for PostgreSQL.
243
Npgsql
Npgsql is the open source .NET data provider for PostgreSQL.
310
Serilog.Extensions.Hosting
Serilog support for .NET Core logging in hosted services
243
StackExchange.Redis
High performance Redis client, incorporating both synchronous and asynchronous usage.
259
StackExchange.Redis
High performance Redis client, incorporating both synchronous and asynchronous usage.
315

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

Version Downloads Last updated
11.0.0-preview.5.26302.115 7 06/09/2026
11.0.0-preview.4.26230.115 15 05/13/2026
11.0.0-preview.3.26207.106 25 04/14/2026
11.0.0-preview.2.26159.112 33 03/11/2026
11.0.0-preview.1.26104.118 40 02/11/2026
10.0.9 6 06/09/2026
10.0.8 14 05/13/2026
10.0.7 27 04/21/2026
10.0.6 28 04/14/2026
10.0.5 32 03/13/2026
10.0.4 31 03/11/2026
10.0.3 35 02/11/2026
10.0.2 39 01/13/2026
10.0.1 64 12/10/2025
10.0.0 70 11/11/2025
10.0.0-rc.2.25502.107 85 10/15/2025
10.0.0-rc.1.25451.107 110 09/09/2025
10.0.0-preview.7.25380.108 85 08/13/2025
10.0.0-preview.6.25358.103 107 07/16/2025
10.0.0-preview.5.25277.114 117 06/08/2025
10.0.0-preview.4.25258.110 130 05/15/2025
10.0.0-preview.3.25171.5 125 04/13/2025
10.0.0-preview.2.25163.2 135 04/01/2025
10.0.0-preview.1.25080.5 134 04/01/2025
9.0.17 6 06/09/2026
9.0.16 7 05/13/2026
9.0.15 25 04/14/2026
9.0.14 32 03/10/2026
9.0.13 38 02/11/2026
9.0.12 37 01/13/2026
9.0.11 59 11/11/2025
9.0.10 104 10/15/2025
9.0.9 101 09/09/2025
9.0.8 141 08/07/2025
9.0.7 113 07/09/2025
9.0.6 134 06/11/2025
9.0.5 116 05/17/2025
9.0.4 107 04/09/2025
9.0.3 133 03/25/2025
9.0.2 200 02/14/2025
9.0.1 112 02/08/2025
9.0.0 248 11/14/2024
9.0.0-rc.2.24473.5 125 10/19/2024
9.0.0-rc.1.24431.7 130 10/20/2024
9.0.0-preview.7.24405.7 148 08/22/2024
9.0.0-preview.6.24327.7 169 07/23/2024
9.0.0-preview.5.24306.7 135 07/21/2024
9.0.0-preview.4.24266.19 147 07/22/2024
9.0.0-preview.3.24172.9 159 07/23/2024
9.0.0-preview.2.24128.5 152 07/23/2024
9.0.0-preview.1.24080.9 154 07/23/2024
8.0.3 130 03/29/2025
8.0.2 365 10/21/2024
8.0.1 205 06/27/2024
8.0.0 516 02/04/2024
8.0.0-rc.2.23479.6 139 07/23/2024
8.0.0-rc.1.23419.4 142 07/22/2024
8.0.0-preview.7.23375.6 141 07/23/2024
8.0.0-preview.6.23329.7 150 07/23/2024
8.0.0-preview.5.23280.8 129 07/14/2024
8.0.0-preview.4.23259.5 145 07/23/2024
8.0.0-preview.3.23174.8 141 07/23/2024
8.0.0-preview.2.23128.3 135 07/23/2024
8.0.0-preview.1.23110.8 143 07/23/2024
7.0.1 142 07/22/2024
7.0.0 224 02/04/2024
7.0.0-rc.2.22472.3 153 07/23/2024
7.0.0-rc.1.22426.10 163 07/23/2024
7.0.0-preview.7.22375.6 134 07/19/2024
7.0.0-preview.6.22324.4 146 07/23/2024
7.0.0-preview.5.22301.12 166 07/23/2024
7.0.0-preview.4.22229.4 155 07/23/2024
7.0.0-preview.3.22175.4 135 07/20/2024
7.0.0-preview.2.22152.2 155 07/22/2024
7.0.0-preview.1.22076.8 139 07/23/2024
6.0.4 146 07/23/2024
6.0.3 130 07/23/2024
6.0.2 143 02/15/2024
6.0.2-mauipre.1.22102.15 116 01/02/2025
6.0.2-mauipre.1.22054.8 137 08/26/2024
6.0.1 137 07/17/2024
6.0.0 404 02/04/2024
6.0.0-rc.2.21480.5 135 07/23/2024
6.0.0-rc.1.21451.13 164 07/20/2024
6.0.0-preview.7.21377.19 143 07/23/2024
6.0.0-preview.6.21352.12 140 07/23/2024
6.0.0-preview.5.21301.5 132 07/23/2024
6.0.0-preview.4.21253.7 141 07/19/2024
6.0.0-preview.3.21201.4 146 07/23/2024
6.0.0-preview.2.21154.6 143 07/22/2024
6.0.0-preview.1.21102.12 135 07/18/2024
5.0.0 255 02/04/2024
5.0.0-rc.2.20475.5 143 07/14/2024
5.0.0-rc.1.20451.14 110 07/23/2024
5.0.0-preview.8.20407.11 137 07/23/2024
5.0.0-preview.7.20364.11 137 07/23/2024
5.0.0-preview.6.20305.6 161 07/23/2024
5.0.0-preview.5.20278.1 149 07/23/2024
5.0.0-preview.4.20251.6 144 07/23/2024
5.0.0-preview.3.20215.2 128 07/23/2024
5.0.0-preview.2.20160.3 132 07/23/2024
5.0.0-preview.1.20120.4 122 07/23/2024
3.1.32 133 07/23/2024
3.1.31 139 07/23/2024
3.1.30 135 07/18/2024
3.1.29 135 07/22/2024
3.1.28 151 07/23/2024
3.1.27 143 07/23/2024
3.1.26 125 07/23/2024
3.1.25 146 07/22/2024
3.1.24 149 07/23/2024
3.1.23 126 07/23/2024
3.1.22 134 07/23/2024
3.1.21 131 07/21/2024
3.1.20 155 07/23/2024
3.1.19 137 07/23/2024
3.1.18 615 02/04/2024
3.1.17 159 07/23/2024
3.1.16 143 07/23/2024
3.1.15 143 07/23/2024
3.1.14 152 07/23/2024
3.1.13 130 07/23/2024
3.1.12 139 07/23/2024
3.1.11 130 07/23/2024
3.1.10 136 07/23/2024
3.1.9 132 07/23/2024
3.1.8 284 02/04/2024
3.1.7 153 07/23/2024
3.1.6 150 02/28/2024
3.1.5 146 07/19/2024
3.1.4 140 07/23/2024
3.1.3 139 07/23/2024
3.1.2 150 07/23/2024
3.1.1 142 07/23/2024
3.1.0 136 07/23/2024
3.1.0-preview3.19553.2 150 07/21/2024
3.1.0-preview2.19525.4 147 07/23/2024
3.1.0-preview1.19506.1 144 07/23/2024
3.0.3 152 07/23/2024
3.0.2 141 07/23/2024
3.0.1 144 07/23/2024
3.0.0 137 07/23/2024
3.0.0-rc1.19456.10 143 07/23/2024
3.0.0-preview9.19423.4 137 07/23/2024
3.0.0-preview8.19405.4 121 07/23/2024
3.0.0-preview7.19362.4 137 07/23/2024
3.0.0-preview6.19304.6 129 07/23/2024
3.0.0-preview5.19227.9 144 07/14/2024
3.0.0-preview4.19216.2 135 07/23/2024
3.0.0-preview3.19153.1 139 07/18/2024
3.0.0-preview.19074.2 141 07/23/2024
3.0.0-preview.18572.1 129 07/20/2024
2.2.0 193 02/05/2024
2.2.0-preview3-35497 161 07/23/2024
2.2.0-preview2-35157 130 07/21/2024
2.2.0-preview1-35029 146 07/22/2024
2.1.1 687 02/04/2024
2.1.0 168 07/23/2024
2.1.0-rc1-final 128 07/23/2024
2.1.0-preview2-final 133 07/23/2024
2.1.0-preview1-final 137 07/23/2024
2.0.2 145 07/23/2024
2.0.1 150 07/21/2024
2.0.0 182 02/05/2024
2.0.0-preview2-final 128 07/23/2024
2.0.0-preview1-final 139 07/14/2024
1.1.2 123 07/23/2024
1.1.1 148 07/18/2024
1.1.0 131 07/21/2024
1.1.0-preview1-final 129 07/23/2024
1.0.2 140 07/23/2024
1.0.1 144 07/22/2024
1.0.0 129 07/23/2024
1.0.0-rc2-final 124 07/22/2024
1.0.0-rc1-final 136 07/19/2024