2019-02-11 05:00:32 -07:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Concurrent;
|
|
|
|
|
|
|
|
|
|
namespace Ryujinx.Common.Logging
|
|
|
|
|
{
|
|
|
|
|
public class ConsoleLogTarget : ILogTarget
|
|
|
|
|
{
|
|
|
|
|
private readonly ILogFormatter _formatter;
|
|
|
|
|
|
2019-12-21 12:52:31 -07:00
|
|
|
|
private readonly string _name;
|
|
|
|
|
|
|
|
|
|
string ILogTarget.Name { get => _name; }
|
|
|
|
|
|
2020-08-03 17:32:53 -06:00
|
|
|
|
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,
|
|
|
|
|
_ => ConsoleColor.Gray,
|
|
|
|
|
};
|
2019-02-11 05:00:32 -07:00
|
|
|
|
|
2019-12-21 12:52:31 -07:00
|
|
|
|
public ConsoleLogTarget(string name)
|
2019-02-11 05:00:32 -07:00
|
|
|
|
{
|
|
|
|
|
_formatter = new DefaultLogFormatter();
|
2019-12-21 12:52:31 -07:00
|
|
|
|
_name = name;
|
2019-02-11 05:00:32 -07:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Log(object sender, LogEventArgs args)
|
|
|
|
|
{
|
2020-08-03 17:32:53 -06:00
|
|
|
|
Console.ForegroundColor = GetLogColor(args.Level);
|
|
|
|
|
Console.WriteLine(_formatter.Format(args));
|
|
|
|
|
Console.ResetColor();
|
2019-02-11 05:00:32 -07:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Dispose()
|
|
|
|
|
{
|
|
|
|
|
Console.ResetColor();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|