Skip to content

Commit 20cb879

Browse files
committed
add microsoft-logger-factory
1 parent 4e868bf commit 20cb879

File tree

3 files changed

+39
-4
lines changed

3 files changed

+39
-4
lines changed

Sources/Falko.ZeroLogger.Microsoft.Logging/Common/Usings.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@
55
global using MicrosoftLogLevel = Microsoft.Extensions.Logging.LogLevel;
66
global using IMicrosoftLogger = Microsoft.Extensions.Logging.ILogger;
77
global using IMicrosoftLoggerProvider = Microsoft.Extensions.Logging.ILoggerProvider;
8+
global using IMicrosoftLoggerFactory = Microsoft.Extensions.Logging.ILoggerFactory;
89
global using MicrosoftEventIdentifier = Microsoft.Extensions.Logging.EventId;
910

1011
// Falko
1112
global using System.Logging.Logs;
1213
global using System.Logging.Runtimes;
13-
global using LogLevel = System.Logging.Logs.LogLevel;
14-
global using Logger = System.Logging.Loggers.Logger;
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
using System.Collections.Concurrent;
2+
using System.Logging.Loggers;
3+
4+
namespace System.Logging.Factories;
5+
6+
public sealed class MicrosoftLoggerFactory : IMicrosoftLoggerFactory
7+
{
8+
private readonly ConcurrentDictionary<string, IMicrosoftLogger> _loggers = new(StringComparer.Ordinal);
9+
10+
private readonly LoggerRuntime _loggerRuntime;
11+
12+
private readonly bool _disposeLoggerRuntime;
13+
14+
// ReSharper disable once ConvertToPrimaryConstructor
15+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
16+
public MicrosoftLoggerFactory(LoggerRuntime loggerRuntime, bool disposeLoggerRuntime)
17+
{
18+
_loggerRuntime = loggerRuntime;
19+
_disposeLoggerRuntime = disposeLoggerRuntime;
20+
}
21+
22+
public IMicrosoftLogger CreateLogger(string categoryName)
23+
{
24+
return _loggers.GetOrAdd
25+
(
26+
categoryName,
27+
static (categoryName, loggerRuntime) => new MicrosoftLogger(categoryName, loggerRuntime),
28+
_loggerRuntime
29+
);
30+
}
31+
32+
public void AddProvider(IMicrosoftLoggerProvider provider) { }
33+
34+
public void Dispose()
35+
{
36+
_loggerRuntime.Dispose();
37+
}
38+
}

Sources/Falko.ZeroLogger.Microsoft.Logging/Providers/MicrosoftLoggerProvider.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,11 @@ public MicrosoftLoggerProvider(LoggerRuntime loggerRuntime, bool disposeLoggerRu
1616
_disposeLoggerRuntime = disposeLoggerRuntime;
1717
}
1818

19-
[MethodImpl(MethodImplOptions.NoInlining)]
2019
public IMicrosoftLogger CreateLogger(string categoryName)
2120
{
2221
return new MicrosoftLogger(categoryName, _loggerRuntime);
2322
}
2423

25-
[MethodImpl(MethodImplOptions.NoInlining)]
2624
public void Dispose()
2725
{
2826
if (_disposeLoggerRuntime) _loggerRuntime.Dispose();

0 commit comments

Comments
 (0)