See More

using System; using System.Diagnostics; using System.IO; using System.Runtime.CompilerServices; namespace CSharpToJavaScript.Utils; ///

/// Logging. /// public static class Log { private static bool _SupportedOS = true; /// /// Self-explanatory, Disable Console Colors. /// /// /// Default: false /// public static bool DisableConsoleColors { get; set; } = false; /// /// Self-explanatory, Disable Console Output. /// /// /// Default: false /// public static bool DisableConsoleOutput { get; set; } = false; static Log() { Trace.Listeners.Add(new ConsoleTraceListener()); //https://learn.microsoft.com/en-us/dotnet/api/system.console.foregroundcolor?view=net-9.0 if (OperatingSystem.IsAndroid() || OperatingSystem.IsBrowser() || OperatingSystem.IsIOS() || OperatingSystem.IsTvOS()) _SupportedOS = false; } /// /// Log a simple message. /// /// Required. Custom message. public static void WriteLine(string message) { if (DisableConsoleOutput == true) return; Trace.Write($"{DateTime.UtcNow.ToString("hh:mm:ss.fff")}: "); Trace.WriteLine($"{message}"); } /// /// Log an info message. /// /// Required. Custom message. public static void InfoLine(string message) { if (DisableConsoleOutput == true) return; Trace.Write($"{DateTime.UtcNow.ToString("hh:mm:ss.fff")}: "); if (_SupportedOS && DisableConsoleColors == false) Console.ForegroundColor = ConsoleColor.Green; Trace.Write("Info: "); if (_SupportedOS && DisableConsoleColors == false) Console.ResetColor(); Trace.WriteLine($"\t{message}"); } /// /// Log a warning message. /// /// Required. Custom message. /// Optional. Ignore /// Optional. Ignore /// Optional. Ignore public static void WarningLine(string message, [CallerFilePath] string? file = null, [CallerMemberName] string? member = null, [CallerLineNumber] int line = 0) { if (DisableConsoleOutput == true) return; Trace.Write($"{DateTime.UtcNow.ToString("hh:mm:ss.fff")}: "); if (_SupportedOS && DisableConsoleColors == false) Console.ForegroundColor = ConsoleColor.Cyan; Trace.WriteLine($"({line}){Path.GetFileName(file?.Replace("\\", "/"))}.{member}:"); if (_SupportedOS && DisableConsoleColors == false) Console.ForegroundColor = ConsoleColor.Yellow; Trace.Write("\tWarning: "); if (_SupportedOS && DisableConsoleColors == false) Console.ResetColor(); Trace.WriteLine($"{message}"); } /// /// Log an error message. /// /// Required. Custom message. /// Optional. Ignore /// Optional. Ignore /// Optional. Ignore public static void ErrorLine(string message, [CallerFilePath] string? file = null, [CallerMemberName] string? member = null, [CallerLineNumber] int line = 0) { if (DisableConsoleOutput == true) return; Trace.Write($"{DateTime.UtcNow.ToString("hh:mm:ss.fff")}: "); if (_SupportedOS && DisableConsoleColors == false) Console.ForegroundColor = ConsoleColor.Cyan; string lineInfo = $"({line}){Path.GetFileName(file?.Replace("\\", "/"))}.{member}:"; Trace.WriteLine(lineInfo); if (_SupportedOS && DisableConsoleColors == false) Console.ForegroundColor = ConsoleColor.Red; Trace.Write("\tERROR: "); if (_SupportedOS && DisableConsoleColors == false) Console.ResetColor(); Debug.Assert(false, $"{lineInfo} \tMessage: {message}"); Trace.WriteLine($"{message}"); } }