Files
RobustToolbox/Robust.Client/Log/DebugConsoleLogHandler.cs
T
AcruidandGitHub 2183cd7ca1 Massive Namespace Cleanup (#1544)
* Removed the Interfaces folder.
* All objects inside the GameObjects subfolders are now in the GameObjects namespace.
* Added a Resharper DotSettings file to mark the GameObjects subfolders as not providing namespaces.
* Simplified Robust.client.Graphics namespace.
* Automated remove redundant using statements.
2021-02-10 23:27:19 -08:00

56 lines
1.7 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>
class DebugConsoleLogHandler : ILogHandler
{
readonly IClientConsoleHost Console;
public DebugConsoleLogHandler(IClientConsoleHost console)
{
Console = console;
}
public void Log(string sawmillName, LogEvent message)
{
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
};
}
}
}