我正在尝试创建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类不再显示。同样,每隔一个原木仅将第二个原木包裹在o.O段中 这是尝试的错误方法吗?如果是这样,那怎么办?