NLog同时输出到文件、控制台、RichTextBox
- 安裝NLog包

- 新增配置文件
<?xml version="1.0" encoding="utf-8"?>
<nlog xmlns="http://nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="console" xsi:type="Console" layout="${longdate} ${level} ${message}" />
<target name="file" xsi:type="File"
fileName="logs/${date:format=yyyy}/${date:format=MM}/${date:format=dd}log.txt"
layout="${longdate} ${level} ${message}"
archiveEvery="Day"
maxArchiveFiles="90" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="console" />
<logger name="*" minlevel="Trace" writeTo="file" />
</rules>
</nlog>
- 自定義RichTxtBoxTarget
using NLog.Targets;
using NLog;
using System;
using System.Windows.Forms;
namespace 你的namespace
{
public class RichTextBoxTarget : TargetWithLayout
{
public RichTextBox RichTextBox { get; set; }
protected override void Write(LogEventInfo logEvent)
{
if (RichTextBox != null)
{
RichTextBox.Invoke((MethodInvoker)delegate
{
RichTextBox.AppendText(this.Layout.Render(logEvent) + Environment.NewLine);
RichTextBox.ScrollToCaret();
});
}
}
}
}
- Main方法中初始化RichTxtBox
private void InitializeNLog()
{
var richTextBoxTarget = new RichTextBoxTarget
{
Name = "richTextBox",
RichTextBox = this.你的RichTextBox名称
};
LogManager.Configuration.AddTarget(richTextBoxTarget);
LogManager.Configuration.LoggingRules.Add(new LoggingRule("*", LogLevel.Trace, richTextBoxTarget));
LogManager.ReconfigExistingLoggers();
}
- 结果展示:
5.1 NLog输出到控制台

5.2 NLog输出到RichTxtBox

5.3 NLog输出到file中

