InMemoryLoggerProvider Class

Provides a logger provider that stores log entries in memory.

public sealed class InMemoryLoggerProvider : ILoggerProvider, ISupportExternalScope, IDisposable

Example

// Use with dependency injection
var services = new ServiceCollection();
using var provider = new InMemoryLoggerProvider();
services.AddLogging(builder => builder.AddProvider(provider));

using var serviceProvider = services.BuildServiceProvider();
var logger = serviceProvider.GetRequiredService<ILoggerFactory>().CreateLogger("MyCategory");
logger.LogInformation("Test message");

// Access logs through the provider
var log = Assert.Single(provider.Logs.Informations);
Assert.Equal("Test message", log.Message);
Implements

Constructors

NameDescription
InMemoryLoggerProvider()Initializes a new instance of the InMemoryLoggerProvider class.
InMemoryLoggerProvider(InMemoryLogCollection?)Initializes a new instance of the InMemoryLoggerProvider class with a shared log collection.
InMemoryLoggerProvider(InMemoryLogCollection?, IExternalScopeProvider?)Initializes a new instance of the InMemoryLoggerProvider class with a shared log collection and external scope provider.
InMemoryLoggerProvider(IExternalScopeProvider?)Initializes a new instance of the InMemoryLoggerProvider class with an external scope provider.
InMemoryLoggerProvider(TimeProvider?)Initializes a new instance of the InMemoryLoggerProvider class with a time provider.
InMemoryLoggerProvider(TimeProvider?, InMemoryLogCollection?)Initializes a new instance of the InMemoryLoggerProvider class with a time provider and shared log collection.
InMemoryLoggerProvider(TimeProvider?, InMemoryLogCollection?, IExternalScopeProvider?)Initializes a new instance of the InMemoryLoggerProvider class with a time provider, shared log collection, and external scope provider.
InMemoryLoggerProvider(TimeProvider?, IExternalScopeProvider?)Initializes a new instance of the InMemoryLoggerProvider class with a time provider and external scope provider.

InMemoryLoggerProvider overloads

InMemoryLoggerProvider()

InMemoryLoggerProvider.cs

Initializes a new instance of the InMemoryLoggerProvider class.

public InMemoryLoggerProvider()

InMemoryLoggerProvider(InMemoryLogCollection?)

InMemoryLoggerProvider.cs

Initializes a new instance of the InMemoryLoggerProvider class with a shared log collection.

public InMemoryLoggerProvider(InMemoryLogCollection? logs)
Parameters
logs InMemoryLogCollection?
The log collection to use, or null to create a new collection.

InMemoryLoggerProvider(InMemoryLogCollection?, IExternalScopeProvider?)

InMemoryLoggerProvider.cs

Initializes a new instance of the InMemoryLoggerProvider class with a shared log collection and external scope provider.

public InMemoryLoggerProvider(InMemoryLogCollection? logs, IExternalScopeProvider? scopeProvider)
Parameters
logs InMemoryLogCollection?
The log collection to use, or null to create a new collection.
scopeProvider IExternalScopeProvider?
The external scope provider to use, or null to create a new instance.

InMemoryLoggerProvider(IExternalScopeProvider?)

InMemoryLoggerProvider.cs

Initializes a new instance of the InMemoryLoggerProvider class with an external scope provider.

public InMemoryLoggerProvider(IExternalScopeProvider? scopeProvider)
Parameters
scopeProvider IExternalScopeProvider?
The external scope provider to use, or null to create a new instance.

InMemoryLoggerProvider(TimeProvider?)

InMemoryLoggerProvider.cs

Initializes a new instance of the InMemoryLoggerProvider class with a time provider.

public InMemoryLoggerProvider(TimeProvider? timeProvider)
Parameters
timeProvider TimeProvider?
The time provider to use for timestamping log entries, or null to use the system time provider.

InMemoryLoggerProvider(TimeProvider?, InMemoryLogCollection?)

InMemoryLoggerProvider.cs

Initializes a new instance of the InMemoryLoggerProvider class with a time provider and shared log collection.

public InMemoryLoggerProvider(TimeProvider? timeProvider, InMemoryLogCollection? logs)
Parameters
timeProvider TimeProvider?
The time provider to use for timestamping log entries, or null to use the system time provider.
logs InMemoryLogCollection?
The log collection to use, or null to create a new collection.

InMemoryLoggerProvider(TimeProvider?, InMemoryLogCollection?, IExternalScopeProvider?)

InMemoryLoggerProvider.cs

Initializes a new instance of the InMemoryLoggerProvider class with a time provider, shared log collection, and external scope provider.

public InMemoryLoggerProvider(TimeProvider? timeProvider, InMemoryLogCollection? logs, IExternalScopeProvider? scopeProvider)
Parameters
timeProvider TimeProvider?
The time provider to use for timestamping log entries, or null to use the system time provider.
logs InMemoryLogCollection?
The log collection to use, or null to create a new collection.
scopeProvider IExternalScopeProvider?
The external scope provider to use, or null to create a new instance.

InMemoryLoggerProvider(TimeProvider?, IExternalScopeProvider?)

InMemoryLoggerProvider.cs

Initializes a new instance of the InMemoryLoggerProvider class with a time provider and external scope provider.

public InMemoryLoggerProvider(TimeProvider? timeProvider, IExternalScopeProvider? scopeProvider)
Parameters
timeProvider TimeProvider?
The time provider to use for timestamping log entries, or null to use the system time provider.
scopeProvider IExternalScopeProvider?
The external scope provider to use, or null to create a new instance.

Properties

NameDescription
LogsGets the collection of log entries captured by all loggers created by this provider.

Gets the collection of log entries captured by all loggers created by this provider.

public InMemoryLogCollection Logs { get; }

Property value

InMemoryLogCollection

Methods

NameDescription
CreateLogger(string)Creates a new logger instance with the specified category name.
CreateLogger<T>()Creates a new generic logger instance.
Dispose()
SetScopeProvider(IExternalScopeProvider)Sets the external scope provider supplied by the logger factory.

CreateLogger overloads

CreateLogger(string)

InMemoryLoggerProvider.cs

Creates a new logger instance with the specified category name.

public ILogger CreateLogger(string categoryName)
Parameters
categoryName string
The category name for messages produced by the logger.
Returns

ILogger A new instance of ILogger.

CreateLogger<T>()

InMemoryLoggerProvider.cs

Creates a new generic logger instance.

public ILogger<T> CreateLogger<T>()
Type parameters
T
The type whose name is used for the logger category name.
Returns

ILogger<T> A new instance of ILogger<TCategoryName>.

public void Dispose()

No documentation is available.

SetScopeProvider(IExternalScopeProvider)

InMemoryLoggerProvider.cs

Sets the external scope provider supplied by the logger factory.

public void SetScopeProvider(IExternalScopeProvider scopeProvider)

Parameters

scopeProvider IExternalScopeProvider
The scope provider the factory uses to track scopes.

Remarks

Implementing ISupportExternalScope is what makes the factory route its scopes through this provider, including the ones it synthesises from the current activity when LoggerFactoryOptions.ActivityTrackingOptions is set.