[API Proposal]: FakeLoggerProvider - Create FakeLogger<T>
- 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
Assessment
This issue has not been assessed yet.