MeloNX/src/Ryujinx.Common/Logging/Targets/ConsoleLogTarget.cs
Isaac Marovitz 66e58aa6a7 iOS - Platform Checks
Co-authored-by: riperiperi <rhy3756547@hotmail.com>
2024-01-22 22:55:42 +00:00

55 lines
1.5 KiB
C#

using Ryujinx.Common.Logging.Formatters;
using System;
namespace Ryujinx.Common.Logging.Targets
{
public class ConsoleLogTarget : ILogTarget
{
private readonly ILogFormatter _formatter;
private readonly string _name;
string ILogTarget.Name { get => _name; }
private static ConsoleColor GetLogColor(LogLevel level) => level switch
{
LogLevel.Info => ConsoleColor.White,
LogLevel.Warning => ConsoleColor.Yellow,
LogLevel.Error => ConsoleColor.Red,
LogLevel.Stub => ConsoleColor.DarkGray,
LogLevel.Notice => ConsoleColor.Cyan,
LogLevel.Trace => ConsoleColor.DarkCyan,
_ => ConsoleColor.Gray,
};
public ConsoleLogTarget(string name)
{
_formatter = new DefaultLogFormatter();
_name = name;
}
public void Log(object sender, LogEventArgs args)
{
if (OperatingSystem.IsIOS())
{
Console.WriteLine(_formatter.Format(args));
}
else
{
Console.ForegroundColor = GetLogColor(args.Level);
Console.WriteLine(_formatter.Format(args));
Console.ResetColor();
}
}
public void Dispose()
{
GC.SuppressFinalize(this);
if (!OperatingSystem.IsIOS())
{
Console.ResetColor();
}
}
}
}