Files
RobustToolbox/Robust.Client/Log/DebugConsoleLogHandler.cs
2022-02-05 19:31:58 +01:00

59 lines
1.8 KiB
C#

using Robust.Client.Console;
using Robust.Shared.Log;
using Robust.Shared.Maths;
using Robust.Shared.Utility;
using Serilog.Events;
namespace Robust.Client.Log
{
/// <summary>
/// Writes logs to the in-game debug console.
/// </summary>
sealed class DebugConsoleLogHandler : ILogHandler
{
readonly IClientConsoleHost Console;
public DebugConsoleLogHandler(IClientConsoleHost console)
{
Console = console;
}
public void Log(string sawmillName, LogEvent message)
{
if (sawmillName == "CON")
return;
var formatted = new FormattedMessage(8);
var robustLevel = message.Level.ToRobust();
formatted.PushColor(Color.DarkGray);
formatted.AddText("[");
formatted.PushColor(LogLevelToColor(robustLevel));
formatted.AddText(LogMessage.LogLevelToName(robustLevel));
formatted.Pop();
formatted.AddText($"] {sawmillName}: ");
formatted.Pop();
formatted.AddText(message.RenderMessage());
if (message.Exception != null)
{
formatted.AddText("\n");
formatted.AddText(message.Exception.ToString());
}
Console.AddFormattedLine(formatted);
}
private static Color LogLevelToColor(LogLevel level)
{
return level switch
{
LogLevel.Verbose => Color.Green,
LogLevel.Debug => Color.Blue,
LogLevel.Info => Color.Cyan,
LogLevel.Warning => Color.Yellow,
LogLevel.Error => Color.Red,
LogLevel.Fatal => Color.Red,
_ => Color.White
};
}
}
}