Skip to content
This repository was archived by the owner on Sep 27, 2020. It is now read-only.

Commit 160fbcd

Browse files
committed
This is v1.0.0
1 parent 5593d6e commit 160fbcd

6 files changed

+153
-0
lines changed

Ultz.Logger/CompoundDisposable.cs

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using System;
2+
using System.Collections.Generic;
3+
4+
namespace Ultz.Logger
5+
{
6+
public class CompoundDisposable : IDisposable
7+
{
8+
public List<IDisposable> OtherDisposables { get; set; } = new List<IDisposable>();
9+
10+
public void Dispose()
11+
{
12+
OtherDisposables.ForEach(x => x.Dispose());
13+
}
14+
}
15+
}

Ultz.Logger/CompoundLogger.cs

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using Microsoft.Extensions.Logging;
5+
6+
namespace Ultz.Logger
7+
{
8+
public class CompoundLogger : ILogger
9+
{
10+
public List<ILogger> OtherLoggers { get; set; } = new List<ILogger>();
11+
12+
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
13+
{
14+
OtherLoggers.ForEach(x => Log<TState>(logLevel, eventId, state, exception, formatter));
15+
}
16+
17+
public bool IsEnabled(LogLevel logLevel)
18+
{
19+
return OtherLoggers.Any(x => x.IsEnabled(logLevel));
20+
}
21+
22+
public IDisposable BeginScope<TState>(TState state)
23+
{
24+
return new CompoundDisposable(){OtherDisposables = OtherLoggers.Select(x => x.BeginScope(state)).ToList()};
25+
}
26+
}
27+
}

Ultz.Logger/EmptyDisposable.cs

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using System;
2+
3+
namespace Ultz.Logger
4+
{
5+
public class EmptyDisposable : IDisposable
6+
{
7+
public void Dispose()
8+
{
9+
}
10+
}
11+
}

Ultz.Logger/Ultz.Logger.csproj

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>netstandard2.0</TargetFramework>
5+
<Version>1.0.0</Version>
6+
<Description>An actually good Microsoft logger.</Description>
7+
</PropertyGroup>
8+
9+
<ItemGroup>
10+
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.2.0" />
11+
</ItemGroup>
12+
13+
</Project>

Ultz.Logger/UltzLogger.cs

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.IO;
4+
using System.Xml.Xsl;
5+
using Microsoft.Extensions.Logging;
6+
7+
namespace Ultz.Logger
8+
{
9+
public class UltzLogger : ILogger
10+
{
11+
public string Format { get; set; } = "[HH:MI:SS LVL]: EVENT_ID MSG";
12+
public List<TextWriter> Writers { get; set; } = new List<TextWriter>();
13+
public List<LogLevel> LogLevels { get; set; } = new List<LogLevel>();
14+
15+
public void Log<TState>
16+
(
17+
LogLevel logLevel,
18+
EventId eventId,
19+
TState state,
20+
Exception exception,
21+
Func<TState, Exception, string> formatter
22+
)
23+
{
24+
var msg = Format.Replace("DD", DateTime.Now.ToString("dd"))
25+
.Replace("MO", DateTime.Now.ToString("MM"))
26+
.Replace("YYYY", DateTime.Now.ToString("yyyy"))
27+
.Replace("YY", DateTime.Now.ToString("yy"))
28+
.Replace("HH", DateTime.Now.ToString("hh"))
29+
.Replace("MI", DateTime.Now.ToString("mm"))
30+
.Replace("SS", DateTime.Now.ToString("ss"))
31+
.Replace("EVENT_ID", $"[{eventId.Name}/{eventId.Id}]")
32+
.Replace("MSG", formatter(state, exception));
33+
Writers.ForEach(x => x.Write(msg));
34+
}
35+
36+
private string GetLevel(LogLevel lvl)
37+
{
38+
switch (lvl)
39+
{
40+
case LogLevel.Trace:
41+
return "TRACE";
42+
case LogLevel.Debug:
43+
return "DEBUG";
44+
case LogLevel.Information:
45+
return "INFO";
46+
case LogLevel.Warning:
47+
return "WARN";
48+
case LogLevel.Error:
49+
return "ERROR";
50+
case LogLevel.Critical:
51+
return "SEVERE";
52+
case LogLevel.None:
53+
return "NONE";
54+
default:
55+
throw new ArgumentOutOfRangeException(nameof(lvl), lvl, null);
56+
}
57+
}
58+
59+
public bool IsEnabled(LogLevel logLevel)
60+
{
61+
return LogLevels.Contains(logLevel);
62+
}
63+
64+
public IDisposable BeginScope<TState>(TState state)
65+
{
66+
return new EmptyDisposable();
67+
}
68+
}
69+
}

Ultz.Logger/UltzLoggerProvider.cs

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using Microsoft.Extensions.Logging;
2+
3+
namespace Ultz.Logger
4+
{
5+
public class UltzLoggerProvider : ILoggerProvider
6+
{
7+
public void Dispose()
8+
{
9+
}
10+
11+
public ILogger CreateLogger(string categoryName)
12+
{
13+
var logger = new UltzLogger();
14+
logger.Format = categoryName + " " + logger.Format;
15+
return logger;
16+
}
17+
}
18+
}

0 commit comments

Comments
 (0)