Visual Studio V2019
.NetFramework 4.5.2
NLog 5.4
以Winform工程为例,使用Nuget包管理工具给项目添加NLog V5.4日志组件,在Progam.cs入口Main中第一行加入:
NLog.LogManager.Configuration = new NLog.Config.XmlLoggingConfiguration(".\\Config\\Test_NLOG.XML");
using语句也不需要
在窗体代码中加入如下代码:
NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
private void Form1_Load(object sender, EventArgs e)
{
logger.Debug("********");
logger.Info("Form Loaded.");
logger.Warn("********");
logger.Error("********");
logger.Trace("********");
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
logger.Info($"Form Closing...");
}
logger.Error的调用在程序代码角度看,大多卸载try catch的异常代码段记录异常
try
{
}
catch (Exception ex)
{
logger.Error("xxxx");
}
finally
{
}
在程序运行目录下新建Config子目录存储配置文件Test_NLOG.XML,其内容:
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<targets>
<!--将Debug导出为每小时一个-->
<target name="debug"
xsi:type="File"
fileName="${basedir}/Logs/${date:format=yyyy}${date:format=MM}${date:format=dd}_Debug.log"
layout="${date:format=yyyy-MM-dd HH\:mm\:ss} [${uppercase:${level}}] : ${message}${newline}" />
<target name="info"
xsi:type="File"
fileName="${basedir}/Logs/${date:format=yyyy}${date:format=MM}${date:format=dd}_Info.log"
layout="${date:format=yyyy-MM-dd HH\:mm\:ss} [${uppercase:${level}}] : ${message}${newline}" />
<target name="warning"
xsi:type="File"
fileName="${basedir}/Logs/${date:format=yyyy}${date:format=MM}${date:format=dd}_Warning.log"
layout="${date:format=yyyy-MM-dd HH\:mm\:ss} [${uppercase:${level}}] : ${message}${newline}" />
<target name="trace"
xsi:type="File"
fileName="${basedir}/Logs/${date:format=yyyy}${date:format=MM}${date:format=dd}_Trace.log"
layout="${date:format=yyyy-MM-dd HH\:mm\:ss} [${uppercase:${level}}] : ${message}${newline}" />
<target name="fatal"
xsi:type="File"
fileName="${basedir}/Logs/${date:format=yyyy}${date:format=MM}${date:format=dd}_Fatal.log"
layout="${date:format=yyyy-MM-dd HH\:mm\:ss} [${uppercase:${level}}] : ${message}${newline}" />
<!--将Error导出为每天一个,而且存放在一个Error文件夹中-->
<target name="error"
xsi:type="File"
fileName="${basedir}/Logs/${date:format=yyyy}${date:format=MM}${date:format=dd}_Error.log"
layout="${date:format=yyyy-MM-dd HH\:mm\:ss} [${uppercase:${level}}] : ${message}${newline}" />
</targets>
<rules>
<logger name="*"
minlevel="Debug"
maxlevel="Debug"
writeTo="debug" />
<logger name="*"
minlevel="Info"
maxlevel="Info"
writeTo="info" />
<logger name="*"
minlevel="Warning"
maxlevel="Warning"
writeTo="warning" />
<logger name="*"
minlevel="Fatal"
maxlevel="Fatal"
writeTo="fatal" />
<logger name="*"
minlevel="Trace"
writeTo="trace" />
<logger name="*"
minlevel="Error"
maxlevel="Error"
writeTo="error" />
</rules>
</nlog>
日志存储的子目录Logs会由NLog组件自动创建。
运行程序,其中Trace日志20250313_Trace.log的内容:
2025-03-13 15:55:29 [DEBUG] : ********
2025-03-13 15:55:29 [INFO] : Form Loaded.
2025-03-13 15:55:29 [WARN] : ********
2025-03-13 15:55:29 [ERROR] : ********
2025-03-13 15:55:29 [TRACE] : ********
2025-03-13 16:06:17 [INFO] : Form Closing...