Files
SPT-Server-Build/SPTarkov.Server/Logger/AbstractFormatter.cs
T
2025-04-19 11:59:04 +01:00

29 lines
1.1 KiB
C#

using System.Text;
using Serilog.Events;
using Serilog.Formatting;
namespace SPTarkov.Server.Logger;
public abstract class AbstractFormatter : ITextFormatter
{
public void Format(LogEvent logEvent, TextWriter output)
{
Console.OutputEncoding = Encoding.UTF8;
var newLine = Environment.NewLine;
var timestamp = logEvent.Timestamp.ToString("HH:mm:ss.fff");
var logLevel = logEvent.Level.ToString().ToUpper().Substring(0, 4);
var message = logEvent.RenderMessage();
var exception = logEvent.Exception != null ? $"{newLine}{logEvent.Exception}{newLine}{logEvent.Exception.StackTrace}" : "";
var sourceContext = logEvent.Properties["SourceContext"].ToString().Replace("\"", "");
var logMessage = ProcessText(GetFormattedText(timestamp, logLevel, sourceContext, $"{message}{exception}"));
output.WriteLine(logMessage);
}
protected abstract string ProcessText(string text);
protected virtual string GetFormattedText(string timestamp, string logLevel, string sourceContext, string message)
{
return $"[{timestamp} {logLevel}][{sourceContext}] {message}";
}
}