|
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
|
|
|
|
namespace StabilityMatrix.Avalonia.Diagnostics.LogViewer.Core.Extensions;
|
|
|
|
|
|
|
|
public static class LoggerExtensions
|
|
|
|
{
|
|
|
|
public static void Emit(
|
|
|
|
this ILogger logger,
|
|
|
|
EventId eventId,
|
|
|
|
LogLevel logLevel,
|
|
|
|
string message,
|
|
|
|
Exception? exception = null,
|
|
|
|
params object?[] args
|
|
|
|
)
|
|
|
|
{
|
|
|
|
if (logger is null)
|
|
|
|
return;
|
|
|
|
|
|
|
|
//if (!logger.IsEnabled(logLevel))
|
|
|
|
// return;
|
|
|
|
|
|
|
|
switch (logLevel)
|
|
|
|
{
|
|
|
|
case LogLevel.Trace:
|
|
|
|
logger.LogTrace(eventId, message, args);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case LogLevel.Debug:
|
|
|
|
logger.LogDebug(eventId, message, args);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case LogLevel.Information:
|
|
|
|
logger.LogInformation(eventId, message, args);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case LogLevel.Warning:
|
|
|
|
logger.LogWarning(eventId, exception, message, args);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case LogLevel.Error:
|
|
|
|
logger.LogError(eventId, exception, message, args);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case LogLevel.Critical:
|
|
|
|
logger.LogCritical(eventId, exception, message, args);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void TestPattern(this ILogger logger, EventId eventId)
|
|
|
|
{
|
|
|
|
var exception = new Exception("Test Error Message");
|
|
|
|
|
|
|
|
logger.Emit(eventId, LogLevel.Trace, "Trace Test Pattern");
|
|
|
|
logger.Emit(eventId, LogLevel.Debug, "Debug Test Pattern");
|
|
|
|
logger.Emit(eventId, LogLevel.Information, "Information Test Pattern");
|
|
|
|
logger.Emit(eventId, LogLevel.Warning, "Warning Test Pattern");
|
|
|
|
logger.Emit(eventId, LogLevel.Error, "Error Test Pattern", exception);
|
|
|
|
logger.Emit(eventId, LogLevel.Critical, "Critical Test Pattern", exception);
|
|
|
|
}
|
|
|
|
}
|