1、在Nuget上安装NLog
![](https://img-blog.csdnimg.cn/img_convert/f8d3bd087ca362e7f2d84f14d6387f45.png)
2、新建NLog.config文件
![](https://img-blog.csdnimg.cn/img_convert/626d258305d18e76488b7caff9bca82a.gif)
<?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"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="false"
internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
<!-- optional, add some variables
https://github.com/nlog/NLog/wiki/Configuration-file#variables
-->
<!--
<variable name="myvar" value="myvalue"/>
-->
<variable name="fileFormat"
value="
${newline}date: ${date}
${newline}level: ${level}
${newline}logger: ${logger}
${newline}machinename: ${machinename}
${newline}message: ${message}
${newline}appdomain: ${appdomain}
${newline}assembly-version: ${assembly-version}
${newline}basedir: ${basedir}
${newline}callsite: ${callsite}
${newline}counter: ${counter}
${newline}nlogdir: ${nlogdir}
${newline}processid: ${processid}
${newline}processname: ${processname}
${newline}specialfolder: ${specialfolder}
${newline}stacktrace: ${stacktrace}
${newline}------------------------------------------------------------" />
<!--
See https://github.com/nlog/nlog/wiki/Configuration-filefor information on customizing logging rules and outputs.
-->
<targets>
<!--
add your targets here
See https://github.com/nlog/NLog/wiki/Targets for possible targets.
See https://github.com/nlog/NLog/wiki/Layout-Renderers for the possible layout renderers.
-->
<!--
Write events to a file with the date in the filename.
<target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}" />
-->
<target name="file" xsi:type="File"
fileName="${basedir}/Logs/${date:format=yyyy-MM}/${shortdate}.log"
layout="${fileFormat}"
maxArchiveFiles="5"
archiveAboveSize="10240" />
</targets>
<rules>
<!-- add your logging rules here -->
<!--
Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace) to "f"
<logger name="*" minlevel="Debug" writeTo="f" />
-->
<!--
Level Example
Fatal Highest level: important stuff down
Error For example application crashes / exceptions.
Warn Incorrect behavior but the application can continue
Info Normal behavior like mail sent, user updated profile etc.
Debug Executed queries, user authenticated, session expired
Trace Begin method X, end method X etc
-->
<!--
Logging 水平分为以下等级“Trace<<Debug<<Info<<Warn<<Error<<Fatal ”,如果我们选择Info值,则Trace和Debug等级的信息不会被输出。
-->
<logger name="*" minlevel="Trace" writeTo="file"/>
</rules>
</nlog>
![](https://img-blog.csdnimg.cn/img_convert/38e6f0fb7afdde0e662ea350c1878684.gif)
3、建立Log类
![](https://img-blog.csdnimg.cn/img_convert/42904315311c04ea2fc59bf6275ca960.gif)
publicsealedclass Log
{
privatestatic NLog.Logger _logger = NLog.LogManager.GetCurrentClassLogger();
private Log() { }
publicstaticvoid Trace(string strMsg)
{
_logger.Trace(strMsg);
}
publicstaticvoid Debug(string strMsg)
{
_logger.Debug(strMsg);
}
publicstaticvoid Info(string strMsg)
{
_logger.Info(strMsg);
}
publicstaticvoid Warn(string strMsg)
{
_logger.Warn(strMsg);
}
publicstaticvoid Error(string strMsg)
{
_logger.Error(strMsg);
}
publicstaticvoid Fatal(string strMsg)
{
_logger.Fatal(strMsg);
}
}
![](https://img-blog.csdnimg.cn/img_convert/457a7e400c5438e0b930992518c10500.gif)
4、将NLog属性修改为始终复制
![](https://img-blog.csdnimg.cn/img_convert/1c18895d96a526bf704a65df5a3070fa.png)