dotnet / dotnet/extensions

[API Proposal]: FakeLoggerProvider - Create FakeLogger<T>

Open
#6,229 0 comments 0 reactions 1 assignee Claimed by @omsoftdev View on GitHub
api-suggestion area-telemetry untriaged
Dominant language
C#
Stars
3.2k
Forks
894
Avg merge
1d 12h
Merged PRs (30d)
23

Description

### Background and motivation

[FakeLoggerProvider](https://github.com/dotnet/extensions/blob/ffe808542124d8515da3d2f29b6b8a438c248a2d/src/Libraries/Microsoft.Extensions.Telemetry.Testing/Logging/FakeLoggerProvider.cs) currently allows the creation of non-generic loggers using:

`var logger = loggerProvider.CreateLogger("CustomLogger");`

However, it does not support creating generic loggers of type `FakeLogger`, which can be useful when testing logging behavior in a type-safe manner. By allowing generic loggers, we can ensure that FakeLogger instances share a common `FakeLogCollector`, as well as a common `IExternalScopeProvider`, thereby providing a consistent log collection and scope management experience across generic and non-generic loggers.

Adding support for `CreateLogger()` will improve usability and consistency in unit tests and middleware scenarios where logging is commonly scoped to specific types.

### API Proposal

*New Method* in *FakeLoggerProvider*

```csharp
public FakeLogger CreateLogger();
```

*Signature Details:*
- `T`: The type for which the logger is created.
- Returns: An instance of `FakeLogger` that utilizes the shared `FakeLogCollector` and `IExternalScopeProvider`.

### API Usage

```csharp
var loggerProvider = new FakeLoggerProvider();
var logger = loggerProvider.CreateLogger();
```

### Alternative Designs

_No response_

### Risks

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.