Microsoft.Extensions.Logging.Abstractions 10.0.12

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
552
MassTransit.Extensions.Hosting
MassTransit configuration extensions using Microsoft.Extensions.Hosting.IHostedService and Microsoft.Extensions.DependencyInjection.
250
Microsoft.Extensions.Caching.Memory
In-memory cache implementation of Microsoft.Extensions.Caching.Memory.IMemoryCache.
255
Microsoft.Extensions.Caching.Memory
In-memory cache implementation of Microsoft.Extensions.Caching.Memory.IMemoryCache.
278
Microsoft.Extensions.Caching.Memory
In-memory cache implementation of Microsoft.Extensions.Caching.Memory.IMemoryCache.
328
Microsoft.Extensions.Hosting.Abstractions
Hosting and startup abstractions for applications.
398
Microsoft.Extensions.Hosting.Abstractions
.NET Core hosting and startup abstractions for applications.
297
Microsoft.Extensions.Hosting.Abstractions
.NET Core hosting and startup abstractions for applications.
486
Microsoft.Extensions.Logging
Logging infrastructure default implementation for Microsoft.Extensions.Logging.
265
Microsoft.Extensions.Logging
Logging infrastructure default implementation for Microsoft.Extensions.Logging.
325
Microsoft.Extensions.Logging
Logging infrastructure default implementation for Microsoft.Extensions.Logging.
349
Microsoft.Extensions.Logging
Logging infrastructure default implementation for Microsoft.Extensions.Logging.
355
Microsoft.Extensions.Logging
Logging infrastructure default implementation for Microsoft.Extensions.Logging.
440
Microsoft.Extensions.Logging
Logging infrastructure default implementation for Microsoft.Extensions.Logging. When using NuGet 3.x this package requires at least version 3.4.
312
Microsoft.IdentityModel.Tokens
Includes types that provide support for SecurityTokens, Cryptographic operations: Signing, Verifying Signatures, Encryption.
509
Npgsql
Npgsql is the open source .NET data provider for PostgreSQL.
260
Npgsql
Npgsql is the open source .NET data provider for PostgreSQL.
325
Serilog.Extensions.Hosting
Serilog support for .NET Core logging in hosted services
257
StackExchange.Redis
High performance Redis client, incorporating both synchronous and asynchronous usage.
278
StackExchange.Redis
High performance Redis client, incorporating both synchronous and asynchronous usage.
333

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

Version Downloads Last updated
11.0.0-rc.1.26425.128 3 09/09/2026
11.0.0-preview.7.26381.103 13 08/12/2026
11.0.0-preview.6.26359.118 22 07/16/2026
11.0.0-preview.5.26302.115 25 06/09/2026
11.0.0-preview.4.26230.115 29 05/13/2026
11.0.0-preview.3.26207.106 54 04/14/2026
11.0.0-preview.2.26159.112 56 03/11/2026
11.0.0-preview.1.26104.118 62 02/11/2026
10.0.12 4 09/09/2026
10.0.11 10 08/12/2026
10.0.10 19 07/17/2026
10.0.9 25 06/09/2026
10.0.8 32 05/13/2026
10.0.7 44 04/21/2026
10.0.6 47 04/14/2026
10.0.5 53 03/13/2026
10.0.4 46 03/11/2026
10.0.3 51 02/11/2026
10.0.2 59 01/13/2026
10.0.1 86 12/10/2025
10.0.0 97 11/11/2025
10.0.0-rc.2.25502.107 105 10/15/2025
10.0.0-rc.1.25451.107 129 09/09/2025
10.0.0-preview.7.25380.108 103 08/13/2025
10.0.0-preview.6.25358.103 123 07/16/2025
10.0.0-preview.5.25277.114 141 06/08/2025
10.0.0-preview.4.25258.110 149 05/15/2025
10.0.0-preview.3.25171.5 142 04/13/2025
10.0.0-preview.2.25163.2 154 04/01/2025
10.0.0-preview.1.25080.5 160 04/01/2025
9.0.20 6 09/09/2026
9.0.19 16 08/12/2026
9.0.18 23 07/17/2026
9.0.17 25 06/09/2026
9.0.16 23 05/13/2026
9.0.15 47 04/14/2026
9.0.14 57 03/10/2026
9.0.13 61 02/11/2026
9.0.12 57 01/13/2026
9.0.11 79 11/11/2025
9.0.10 133 10/15/2025
9.0.9 122 09/09/2025
9.0.8 162 08/07/2025
9.0.7 132 07/09/2025
9.0.6 150 06/11/2025
9.0.5 141 05/17/2025
9.0.4 126 04/09/2025
9.0.3 154 03/25/2025
9.0.2 221 02/14/2025
9.0.1 129 02/08/2025
9.0.0 277 11/14/2024
9.0.0-rc.2.24473.5 140 10/19/2024
9.0.0-rc.1.24431.7 153 10/20/2024
9.0.0-preview.7.24405.7 169 08/22/2024
9.0.0-preview.6.24327.7 185 07/23/2024
9.0.0-preview.5.24306.7 160 07/21/2024
9.0.0-preview.4.24266.19 166 07/22/2024
9.0.0-preview.3.24172.9 181 07/23/2024
9.0.0-preview.2.24128.5 170 07/23/2024
9.0.0-preview.1.24080.9 175 07/23/2024
8.0.3 154 03/29/2025
8.0.2 391 10/21/2024
8.0.1 229 06/27/2024
8.0.0 541 02/04/2024
8.0.0-rc.2.23479.6 160 07/23/2024
8.0.0-rc.1.23419.4 159 07/22/2024
8.0.0-preview.7.23375.6 166 07/23/2024
8.0.0-preview.6.23329.7 174 07/23/2024
8.0.0-preview.5.23280.8 151 07/14/2024
8.0.0-preview.4.23259.5 169 07/23/2024
8.0.0-preview.3.23174.8 163 07/23/2024
8.0.0-preview.2.23128.3 155 07/23/2024
8.0.0-preview.1.23110.8 162 07/23/2024
7.0.1 166 07/22/2024
7.0.0 249 02/04/2024
7.0.0-rc.2.22472.3 172 07/23/2024
7.0.0-rc.1.22426.10 181 07/23/2024
7.0.0-preview.7.22375.6 154 07/19/2024
7.0.0-preview.6.22324.4 164 07/23/2024
7.0.0-preview.5.22301.12 183 07/23/2024
7.0.0-preview.4.22229.4 171 07/23/2024
7.0.0-preview.3.22175.4 159 07/20/2024
7.0.0-preview.2.22152.2 175 07/22/2024
7.0.0-preview.1.22076.8 163 07/23/2024
6.0.4 165 07/23/2024
6.0.3 152 07/23/2024
6.0.2 160 02/15/2024
6.0.2-mauipre.1.22102.15 134 01/02/2025
6.0.2-mauipre.1.22054.8 154 08/26/2024
6.0.1 155 07/17/2024
6.0.0 438 02/04/2024
6.0.0-rc.2.21480.5 153 07/23/2024
6.0.0-rc.1.21451.13 184 07/20/2024
6.0.0-preview.7.21377.19 160 07/23/2024
6.0.0-preview.6.21352.12 154 07/23/2024
6.0.0-preview.5.21301.5 152 07/23/2024
6.0.0-preview.4.21253.7 160 07/19/2024
6.0.0-preview.3.21201.4 165 07/23/2024
6.0.0-preview.2.21154.6 163 07/22/2024
6.0.0-preview.1.21102.12 155 07/18/2024
5.0.0 270 02/04/2024
5.0.0-rc.2.20475.5 163 07/14/2024
5.0.0-rc.1.20451.14 128 07/23/2024
5.0.0-preview.8.20407.11 161 07/23/2024
5.0.0-preview.7.20364.11 157 07/23/2024
5.0.0-preview.6.20305.6 180 07/23/2024
5.0.0-preview.5.20278.1 166 07/23/2024
5.0.0-preview.4.20251.6 164 07/23/2024
5.0.0-preview.3.20215.2 147 07/23/2024
5.0.0-preview.2.20160.3 152 07/23/2024
5.0.0-preview.1.20120.4 139 07/23/2024
3.1.32 151 07/23/2024
3.1.31 159 07/23/2024
3.1.30 156 07/18/2024
3.1.29 151 07/22/2024
3.1.28 169 07/23/2024
3.1.27 161 07/23/2024
3.1.26 146 07/23/2024
3.1.25 164 07/22/2024
3.1.24 166 07/23/2024
3.1.23 147 07/23/2024
3.1.22 152 07/23/2024
3.1.21 148 07/21/2024
3.1.20 176 07/23/2024
3.1.19 158 07/23/2024
3.1.18 639 02/04/2024
3.1.17 178 07/23/2024
3.1.16 161 07/23/2024
3.1.15 162 07/23/2024
3.1.14 167 07/23/2024
3.1.13 151 07/23/2024
3.1.12 159 07/23/2024
3.1.11 150 07/23/2024
3.1.10 154 07/23/2024
3.1.9 154 07/23/2024
3.1.8 303 02/04/2024
3.1.7 170 07/23/2024
3.1.6 171 02/28/2024
3.1.5 164 07/19/2024
3.1.4 157 07/23/2024
3.1.3 156 07/23/2024
3.1.2 175 07/23/2024
3.1.1 163 07/23/2024
3.1.0 154 07/23/2024
3.1.0-preview3.19553.2 166 07/21/2024
3.1.0-preview2.19525.4 163 07/23/2024
3.1.0-preview1.19506.1 163 07/23/2024
3.0.3 173 07/23/2024
3.0.2 161 07/23/2024
3.0.1 165 07/23/2024
3.0.0 152 07/23/2024
3.0.0-rc1.19456.10 160 07/23/2024
3.0.0-preview9.19423.4 150 07/23/2024
3.0.0-preview8.19405.4 143 07/23/2024
3.0.0-preview7.19362.4 156 07/23/2024
3.0.0-preview6.19304.6 148 07/23/2024
3.0.0-preview5.19227.9 162 07/14/2024
3.0.0-preview4.19216.2 154 07/23/2024
3.0.0-preview3.19153.1 160 07/18/2024
3.0.0-preview.19074.2 165 07/23/2024
3.0.0-preview.18572.1 148 07/20/2024
2.2.0 212 02/05/2024
2.2.0-preview3-35497 182 07/23/2024
2.2.0-preview2-35157 150 07/21/2024
2.2.0-preview1-35029 164 07/22/2024
2.1.1 712 02/04/2024
2.1.0 186 07/23/2024
2.1.0-rc1-final 146 07/23/2024
2.1.0-preview2-final 152 07/23/2024
2.1.0-preview1-final 153 07/23/2024
2.0.2 164 07/23/2024
2.0.1 176 07/21/2024
2.0.0 201 02/05/2024
2.0.0-preview2-final 146 07/23/2024
2.0.0-preview1-final 159 07/14/2024
1.1.2 145 07/23/2024
1.1.1 171 07/18/2024
1.1.0 157 07/21/2024
1.1.0-preview1-final 145 07/23/2024
1.0.2 162 07/23/2024
1.0.1 162 07/22/2024
1.0.0 150 07/23/2024
1.0.0-rc2-final 141 07/22/2024
1.0.0-rc1-final 155 07/19/2024