InMemoryLoggerProvider Class
Provides a logger provider that stores log entries in memory.
public sealed class InMemoryLoggerProvider : ILoggerProvider, ISupportExternalScope, IDisposableExample
// 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);Constructors
| Name | Description |
|---|---|
| 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.csInitializes a new instance of the InMemoryLoggerProvider class.
public InMemoryLoggerProvider()InMemoryLoggerProvider(InMemoryLogCollection?)
InMemoryLoggerProvider.csInitializes a new instance of the InMemoryLoggerProvider class with a shared log collection.
public InMemoryLoggerProvider(InMemoryLogCollection? logs)Parameters
logsInMemoryLogCollection?- The log collection to use, or
nullto create a new collection.
InMemoryLoggerProvider(InMemoryLogCollection?, IExternalScopeProvider?)
InMemoryLoggerProvider.csInitializes a new instance of the InMemoryLoggerProvider class with a shared log collection and external scope provider.
public InMemoryLoggerProvider(InMemoryLogCollection? logs, IExternalScopeProvider? scopeProvider)Parameters
logsInMemoryLogCollection?- The log collection to use, or
nullto create a new collection. scopeProviderIExternalScopeProvider?- The external scope provider to use, or
nullto create a new instance.
InMemoryLoggerProvider(IExternalScopeProvider?)
InMemoryLoggerProvider.csInitializes a new instance of the InMemoryLoggerProvider class with an external scope provider.
public InMemoryLoggerProvider(IExternalScopeProvider? scopeProvider)Parameters
scopeProviderIExternalScopeProvider?- The external scope provider to use, or
nullto create a new instance.
InMemoryLoggerProvider(TimeProvider?)
InMemoryLoggerProvider.csInitializes a new instance of the InMemoryLoggerProvider class with a time provider.
public InMemoryLoggerProvider(TimeProvider? timeProvider)Parameters
timeProviderTimeProvider?- The time provider to use for timestamping log entries, or
nullto use the system time provider.
InMemoryLoggerProvider(TimeProvider?, InMemoryLogCollection?)
InMemoryLoggerProvider.csInitializes a new instance of the InMemoryLoggerProvider class with a time provider and shared log collection.
public InMemoryLoggerProvider(TimeProvider? timeProvider, InMemoryLogCollection? logs)Parameters
timeProviderTimeProvider?- The time provider to use for timestamping log entries, or
nullto use the system time provider. logsInMemoryLogCollection?- The log collection to use, or
nullto create a new collection.
InMemoryLoggerProvider(TimeProvider?, InMemoryLogCollection?, IExternalScopeProvider?)
InMemoryLoggerProvider.csInitializes 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
timeProviderTimeProvider?- The time provider to use for timestamping log entries, or
nullto use the system time provider. logsInMemoryLogCollection?- The log collection to use, or
nullto create a new collection. scopeProviderIExternalScopeProvider?- The external scope provider to use, or
nullto create a new instance.
InMemoryLoggerProvider(TimeProvider?, IExternalScopeProvider?)
InMemoryLoggerProvider.csInitializes a new instance of the InMemoryLoggerProvider class with a time provider and external scope provider.
public InMemoryLoggerProvider(TimeProvider? timeProvider, IExternalScopeProvider? scopeProvider)Parameters
timeProviderTimeProvider?- The time provider to use for timestamping log entries, or
nullto use the system time provider. scopeProviderIExternalScopeProvider?- The external scope provider to use, or
nullto create a new instance.
Properties
| Name | Description |
|---|---|
| Logs | Gets 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
Methods
| Name | Description |
|---|---|
| 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.csCreateLogger<T>()
InMemoryLoggerProvider.csCreates 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>.
Dispose()
InMemoryLoggerProvider.cspublic void Dispose()No documentation is available.
SetScopeProvider(IExternalScopeProvider)
InMemoryLoggerProvider.csSets the external scope provider supplied by the logger factory.
public void SetScopeProvider(IExternalScopeProvider scopeProvider)Parameters
scopeProviderIExternalScopeProvider- 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.