Microsoft.Extensions.Logging.Abstractions 9.0.19

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
549
MassTransit.Extensions.Hosting
MassTransit configuration extensions using Microsoft.Extensions.Hosting.IHostedService and Microsoft.Extensions.DependencyInjection.
243
Microsoft.Extensions.Caching.Memory
In-memory cache implementation of Microsoft.Extensions.Caching.Memory.IMemoryCache.
249
Microsoft.Extensions.Caching.Memory
In-memory cache implementation of Microsoft.Extensions.Caching.Memory.IMemoryCache.
273
Microsoft.Extensions.Caching.Memory
In-memory cache implementation of Microsoft.Extensions.Caching.Memory.IMemoryCache.
322
Microsoft.Extensions.Hosting.Abstractions
Hosting and startup abstractions for applications.
392
Microsoft.Extensions.Hosting.Abstractions
.NET Core hosting and startup abstractions for applications.
291
Microsoft.Extensions.Hosting.Abstractions
.NET Core hosting and startup abstractions for applications.
481
Microsoft.Extensions.Logging
Logging infrastructure default implementation for Microsoft.Extensions.Logging.
256
Microsoft.Extensions.Logging
Logging infrastructure default implementation for Microsoft.Extensions.Logging.
316
Microsoft.Extensions.Logging
Logging infrastructure default implementation for Microsoft.Extensions.Logging.
342
Microsoft.Extensions.Logging
Logging infrastructure default implementation for Microsoft.Extensions.Logging.
349
Microsoft.Extensions.Logging
Logging infrastructure default implementation for Microsoft.Extensions.Logging.
436
Microsoft.Extensions.Logging
Logging infrastructure default implementation for Microsoft.Extensions.Logging. When using NuGet 3.x this package requires at least version 3.4.
307
Microsoft.IdentityModel.Tokens
Includes types that provide support for SecurityTokens, Cryptographic operations: Signing, Verifying Signatures, Encryption.
505
Npgsql
Npgsql is the open source .NET data provider for PostgreSQL.
255
Npgsql
Npgsql is the open source .NET data provider for PostgreSQL.
320
Serilog.Extensions.Hosting
Serilog support for .NET Core logging in hosted services
252
StackExchange.Redis
High performance Redis client, incorporating both synchronous and asynchronous usage.
271
StackExchange.Redis
High performance Redis client, incorporating both synchronous and asynchronous usage.
327

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

Version Downloads Last updated
11.0.0-preview.7.26381.103 1 08/12/2026
11.0.0-preview.6.26359.118 15 07/16/2026
11.0.0-preview.5.26302.115 20 06/09/2026
11.0.0-preview.4.26230.115 24 05/13/2026
11.0.0-preview.3.26207.106 47 04/14/2026
11.0.0-preview.2.26159.112 50 03/11/2026
11.0.0-preview.1.26104.118 53 02/11/2026
10.0.11 1 08/12/2026
10.0.10 16 07/17/2026
10.0.9 21 06/09/2026
10.0.8 27 05/13/2026
10.0.7 40 04/21/2026
10.0.6 43 04/14/2026
10.0.5 49 03/13/2026
10.0.4 42 03/11/2026
10.0.3 47 02/11/2026
10.0.2 54 01/13/2026
10.0.1 79 12/10/2025
10.0.0 90 11/11/2025
10.0.0-rc.2.25502.107 100 10/15/2025
10.0.0-rc.1.25451.107 124 09/09/2025
10.0.0-preview.7.25380.108 98 08/13/2025
10.0.0-preview.6.25358.103 117 07/16/2025
10.0.0-preview.5.25277.114 130 06/08/2025
10.0.0-preview.4.25258.110 144 05/15/2025
10.0.0-preview.3.25171.5 138 04/13/2025
10.0.0-preview.2.25163.2 149 04/01/2025
10.0.0-preview.1.25080.5 153 04/01/2025
9.0.19 1 08/12/2026
9.0.18 12 07/17/2026
9.0.17 23 06/09/2026
9.0.16 18 05/13/2026
9.0.15 42 04/14/2026
9.0.14 54 03/10/2026
9.0.13 55 02/11/2026
9.0.12 51 01/13/2026
9.0.11 73 11/11/2025
9.0.10 129 10/15/2025
9.0.9 114 09/09/2025
9.0.8 156 08/07/2025
9.0.7 127 07/09/2025
9.0.6 147 06/11/2025
9.0.5 133 05/17/2025
9.0.4 121 04/09/2025
9.0.3 149 03/25/2025
9.0.2 215 02/14/2025
9.0.1 123 02/08/2025
9.0.0 269 11/14/2024
9.0.0-rc.2.24473.5 137 10/19/2024
9.0.0-rc.1.24431.7 142 10/20/2024
9.0.0-preview.7.24405.7 163 08/22/2024
9.0.0-preview.6.24327.7 181 07/23/2024
9.0.0-preview.5.24306.7 153 07/21/2024
9.0.0-preview.4.24266.19 160 07/22/2024
9.0.0-preview.3.24172.9 174 07/23/2024
9.0.0-preview.2.24128.5 162 07/23/2024
9.0.0-preview.1.24080.9 170 07/23/2024
8.0.3 146 03/29/2025
8.0.2 386 10/21/2024
8.0.1 225 06/27/2024
8.0.0 534 02/04/2024
8.0.0-rc.2.23479.6 151 07/23/2024
8.0.0-rc.1.23419.4 153 07/22/2024
8.0.0-preview.7.23375.6 158 07/23/2024
8.0.0-preview.6.23329.7 166 07/23/2024
8.0.0-preview.5.23280.8 146 07/14/2024
8.0.0-preview.4.23259.5 160 07/23/2024
8.0.0-preview.3.23174.8 157 07/23/2024
8.0.0-preview.2.23128.3 148 07/23/2024
8.0.0-preview.1.23110.8 156 07/23/2024
7.0.1 160 07/22/2024
7.0.0 243 02/04/2024
7.0.0-rc.2.22472.3 166 07/23/2024
7.0.0-rc.1.22426.10 175 07/23/2024
7.0.0-preview.7.22375.6 147 07/19/2024
7.0.0-preview.6.22324.4 158 07/23/2024
7.0.0-preview.5.22301.12 176 07/23/2024
7.0.0-preview.4.22229.4 166 07/23/2024
7.0.0-preview.3.22175.4 151 07/20/2024
7.0.0-preview.2.22152.2 171 07/22/2024
7.0.0-preview.1.22076.8 157 07/23/2024
6.0.4 160 07/23/2024
6.0.3 145 07/23/2024
6.0.2 154 02/15/2024
6.0.2-mauipre.1.22102.15 129 01/02/2025
6.0.2-mauipre.1.22054.8 148 08/26/2024
6.0.1 150 07/17/2024
6.0.0 432 02/04/2024
6.0.0-rc.2.21480.5 146 07/23/2024
6.0.0-rc.1.21451.13 179 07/20/2024
6.0.0-preview.7.21377.19 156 07/23/2024
6.0.0-preview.6.21352.12 151 07/23/2024
6.0.0-preview.5.21301.5 144 07/23/2024
6.0.0-preview.4.21253.7 154 07/19/2024
6.0.0-preview.3.21201.4 159 07/23/2024
6.0.0-preview.2.21154.6 157 07/22/2024
6.0.0-preview.1.21102.12 150 07/18/2024
5.0.0 266 02/04/2024
5.0.0-rc.2.20475.5 155 07/14/2024
5.0.0-rc.1.20451.14 122 07/23/2024
5.0.0-preview.8.20407.11 153 07/23/2024
5.0.0-preview.7.20364.11 150 07/23/2024
5.0.0-preview.6.20305.6 174 07/23/2024
5.0.0-preview.5.20278.1 160 07/23/2024
5.0.0-preview.4.20251.6 159 07/23/2024
5.0.0-preview.3.20215.2 142 07/23/2024
5.0.0-preview.2.20160.3 147 07/23/2024
5.0.0-preview.1.20120.4 134 07/23/2024
3.1.32 146 07/23/2024
3.1.31 155 07/23/2024
3.1.30 150 07/18/2024
3.1.29 146 07/22/2024
3.1.28 164 07/23/2024
3.1.27 156 07/23/2024
3.1.26 140 07/23/2024
3.1.25 159 07/22/2024
3.1.24 159 07/23/2024
3.1.23 140 07/23/2024
3.1.22 145 07/23/2024
3.1.21 144 07/21/2024
3.1.20 171 07/23/2024
3.1.19 152 07/23/2024
3.1.18 627 02/04/2024
3.1.17 170 07/23/2024
3.1.16 155 07/23/2024
3.1.15 154 07/23/2024
3.1.14 163 07/23/2024
3.1.13 146 07/23/2024
3.1.12 153 07/23/2024
3.1.11 146 07/23/2024
3.1.10 148 07/23/2024
3.1.9 150 07/23/2024
3.1.8 296 02/04/2024
3.1.7 166 07/23/2024
3.1.6 163 02/28/2024
3.1.5 159 07/19/2024
3.1.4 152 07/23/2024
3.1.3 151 07/23/2024
3.1.2 165 07/23/2024
3.1.1 161 07/23/2024
3.1.0 147 07/23/2024
3.1.0-preview3.19553.2 162 07/21/2024
3.1.0-preview2.19525.4 158 07/23/2024
3.1.0-preview1.19506.1 156 07/23/2024
3.0.3 164 07/23/2024
3.0.2 152 07/23/2024
3.0.1 157 07/23/2024
3.0.0 147 07/23/2024
3.0.0-rc1.19456.10 156 07/23/2024
3.0.0-preview9.19423.4 145 07/23/2024
3.0.0-preview8.19405.4 135 07/23/2024
3.0.0-preview7.19362.4 152 07/23/2024
3.0.0-preview6.19304.6 141 07/23/2024
3.0.0-preview5.19227.9 157 07/14/2024
3.0.0-preview4.19216.2 147 07/23/2024
3.0.0-preview3.19153.1 151 07/18/2024
3.0.0-preview.19074.2 159 07/23/2024
3.0.0-preview.18572.1 143 07/20/2024
2.2.0 207 02/05/2024
2.2.0-preview3-35497 177 07/23/2024
2.2.0-preview2-35157 143 07/21/2024
2.2.0-preview1-35029 159 07/22/2024
2.1.1 707 02/04/2024
2.1.0 181 07/23/2024
2.1.0-rc1-final 141 07/23/2024
2.1.0-preview2-final 146 07/23/2024
2.1.0-preview1-final 149 07/23/2024
2.0.2 158 07/23/2024
2.0.1 168 07/21/2024
2.0.0 194 02/05/2024
2.0.0-preview2-final 142 07/23/2024
2.0.0-preview1-final 154 07/14/2024
1.1.2 139 07/23/2024
1.1.1 166 07/18/2024
1.1.0 149 07/21/2024
1.1.0-preview1-final 141 07/23/2024
1.0.2 156 07/23/2024
1.0.1 159 07/22/2024
1.0.0 143 07/23/2024
1.0.0-rc2-final 137 07/22/2024
1.0.0-rc1-final 151 07/19/2024