using System.Globalization; namespace DigitalData.Modules.Logging; public class LogConfig { public bool Debug { get; set; } public Logger GetLogger() => new(); } public class Logger { ILogger logger; public void LogDebug(string message, params object?[] args) => Write("DEBUG", message, args); public void LogInformation(string message, params object?[] args) => Write("INFO", message, args); public void LogWarning(string message, params object?[] args) => Write("WARN", message, args); public void LogWarning(Exception exception, string message, params object?[] args) => Write("WARN", message + " " + exception.Message, args); public void Error(Exception exception) => logger.LogError(exception, exception.Message); public void LogError(Exception exception, string message, params object?[] args) => Write("ERROR", message + " " + exception.Message, args); private static void Write(string level, string message, params object?[] args) { var formatted = args.Length > 0 ? string.Format(CultureInfo.InvariantCulture, message, args) : message; Console.WriteLine($"[{level}] {formatted}"); } } public static class LoggerExtensions { public static void LogError(this ILogger logger, Exception exception) { logger.LogError(exception, "{message}", exception.Message); } }