49 lines
1.4 KiB
C#
49 lines
1.4 KiB
C#
using Microsoft.Extensions.Logging;
|
|
using System;
|
|
|
|
namespace Adaptation._Tests.Shared.Log;
|
|
|
|
public class FeedbackLogger : ILogger
|
|
{
|
|
|
|
public int EventId { get; set; }
|
|
|
|
private readonly string _Name;
|
|
private readonly LogLevel _LogLevel;
|
|
private readonly IFeedback _Feedback;
|
|
|
|
public FeedbackLogger(LogLevel logLevel, IFeedback feedback, string name)
|
|
{
|
|
_Feedback = feedback;
|
|
_Name = name;
|
|
EventId = 0;
|
|
_LogLevel = logLevel;
|
|
if (string.IsNullOrEmpty(_Name))
|
|
{ }
|
|
}
|
|
|
|
public IDisposable BeginScope<TState>(TState state) => null;
|
|
|
|
public bool IsEnabled(LogLevel logLevel) => logLevel >= _LogLevel;
|
|
|
|
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
|
|
{
|
|
if (IsEnabled(logLevel) && (EventId == 0 || EventId == eventId.Id))
|
|
{
|
|
string message = formatter(state, null);
|
|
int color = logLevel switch
|
|
{
|
|
LogLevel.Trace => -1,
|
|
LogLevel.Debug => -1,
|
|
LogLevel.Information => -16776961,
|
|
LogLevel.Warning => -65281,
|
|
LogLevel.Error => -65536,
|
|
LogLevel.Critical => -65536,
|
|
LogLevel.None => -1,
|
|
_ => throw new Exception(),
|
|
};
|
|
_Feedback.Print(message, color);
|
|
}
|
|
}
|
|
|
|
} |