21 lines
760 B
C#
21 lines
760 B
C#
using Serilog.Events;
|
|
using Serilog.Formatting;
|
|
|
|
namespace Server.Logger;
|
|
|
|
public abstract class AbstractFormatter : ITextFormatter
|
|
{
|
|
protected abstract string ProcessText(string text);
|
|
|
|
public void Format(LogEvent logEvent, TextWriter output)
|
|
{
|
|
var newLine = Environment.NewLine;
|
|
var timestamp = logEvent.Timestamp.ToString("HH:mm:ss");
|
|
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 logMessage = ProcessText($"[{timestamp} {logLevel}] {message}{exception}");
|
|
output.WriteLine(logMessage);
|
|
}
|
|
}
|