using System; using System.Diagnostics; namespace Syntriax.Engine.Core.Debug; public static class LoggerExtensions { public static void Log(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(this ILogger logger, T caller, string message, bool force = false) => Log(logger, caller, message, ILogger.Level.Info, force); public static void LogError(this ILogger logger, T caller, string message, bool force = false) { Log(logger, caller, message, ILogger.Level.Error, force); Log(logger, caller, $"{nameof(StackTrace)}:{Environment.NewLine}{new StackTrace()}"); } public static void LogException(this ILogger logger, T caller, Exception exception, bool force = false) { Log(logger, caller, $"Message: {exception.Message}", ILogger.Level.Error, force); Log(logger, caller, $"InnerException: {exception.InnerException}", ILogger.Level.Error, force); Log(logger, caller, $"{nameof(StackTrace)}:{Environment.NewLine}{exception.StackTrace}"); } }