37 lines
1.6 KiB
C#
37 lines
1.6 KiB
C#
using System;
|
|
using System.Diagnostics;
|
|
|
|
namespace Syntriax.Engine.Core.Debug;
|
|
|
|
public static class LoggerExtensions
|
|
{
|
|
public static void Log<T>(this ILogger logger, T caller, string message, ILogger.Level level = ILogger.Level.Info, bool force = false)
|
|
{
|
|
string body = $"{caller?.GetType().Name ?? typeof(T).Name}: {message}";
|
|
logger.Log(body, level, force);
|
|
}
|
|
|
|
public static void LogWarning<T>(this ILogger logger, T caller, string message, bool force = false) => Log(logger, caller, message, ILogger.Level.Info, force);
|
|
|
|
public static void LogError<T>(this ILogger logger, T caller, string message, bool force = false)
|
|
{
|
|
Log(logger, caller, message, ILogger.Level.Error, force);
|
|
LogTrace(logger, caller, new StackTrace(), force);
|
|
}
|
|
|
|
public static void LogException<T>(this ILogger logger, T caller, Exception exception, bool force = false)
|
|
{
|
|
Log(logger, caller, $"Exception of type {exception.GetType().Name} occured", ILogger.Level.Error, force);
|
|
Log(logger, caller, $"Message: {exception.Message}", ILogger.Level.Error, force);
|
|
Log(logger, caller, $"InnerException: {exception.InnerException}", ILogger.Level.Error, force);
|
|
|
|
// Not using LogTrace because exception.StackTrace is a type of string
|
|
Log(logger, caller, $"{nameof(StackTrace)}:{Environment.NewLine}{exception.StackTrace}", ILogger.Level.Trace);
|
|
}
|
|
|
|
public static void LogTrace<T>(this ILogger logger, T caller, StackTrace stackTrace, bool force = false)
|
|
{
|
|
Log(logger, caller, $"{nameof(StackTrace)}:{Environment.NewLine}{stackTrace ?? new()}", ILogger.Level.Trace, force);
|
|
}
|
|
}
|