Я пытаюсь создать страницу журнала HTML.Для этого мне нужно обернуть журналы в абзацы, но я не могу заставить это работать с пользовательским шаблоном PatternLayoutConverter.
Вот что я пробовал до сих пор:
static void Setup()
{
Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
PatternLayout patternLayout = new PatternLayout();
patternLayout.AddConverter("HTML", typeof(HtmlConverter));
patternLayout.ConversionPattern = "%HTML{%date{HH:mm:ss,fff} %level [%thread] %logger{2} - %message}";
patternLayout.ActivateOptions();
RollingFileAppender roller = new RollingFileAppender();
roller.AppendToFile = false;
roller.File = "./Log.html";
roller.Layout = patternLayout;
roller.MaximumFileSize = "10MB";
roller.MaxSizeRollBackups = 3;
roller.RollingStyle = RollingFileAppender.RollingMode.Once;
roller.StaticLogFileName = true;
roller.ActivateOptions();
hierarchy.Root.AddAppender(roller);
hierarchy.Root.Level = Level.All;
hierarchy.Configured = true;
}
class HtmlConverter : PatternLayoutConverter
{
protected override void Convert(TextWriter writer, LoggingEvent loggingEvent)
{
string color = "";
switch (loggingEvent.Level.Name)
{
case "DEBUG":
color = "#58ff42";
break;
case "WARN":
color = "#ffe20c";
break;
case "INFO":
color = "#ffffff";
break;
case "ERROR":
color = "#ff2828";
break;
case "FATAL":
color = "#ff5b5b";
break;
}
string logToRender = string.Format("<p style='color:{0};'>{1}</p>", color, loggingEvent.RenderedMessage);
writer.Write(logToRender);
}
}
Это дастследующий результат:
<p style='color:#58ff42;'>Log</p>
DEBUG [1] PLINTest.Awake - Log}
<p style='color:#ffffff;'>LogAssertion</p>
INFO [1] PLINTest.Awake - LogAssertion}
<p style='color:#ff2828;'>LogError</p>
ERROR [1] PLINTest.Awake - LogError}
<p style='color:#ff5b5b;'>Exception: Exception of type 'System.Exception' was thrown.</p>
FATAL [1] PLINTest.Awake - Exception: Exception of type 'System.Exception' was thrown.}
<p style='color:#ffe20c;'>LogWarning</p>
WARN [1] PLINTest.Awake - LogWarning}
<p style='color:#ff5b5b;'>Exception: Exception throw</p>
FATAL [1] Application.CallLogCallback - Exception: Exception throw}
Date, LogLevel, ThreadID и Calling class даже больше не отображаются.Также только каждый второй журнал упакован в апараграф oO. Это неправильный способ попробовать.Если так, как это будет выполнимо?