首先我们需要在Nuget中安装Nlog和Nlog-Schema。
添加配置文件:NLog.config
<?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="d:\nlog\nlog-internal.log">
<!-- optional, add some variables
https://github.com/nlog/NLog/wiki/Configuration-file#variables
-->
<!--<variable name="myvar" value="myvalue"/>-->
<variable name="logDir" value="${basedir}/nlog"/>
<variable name="logFileName" value="${date:format=yyyyMMdd}.txt"/>
<variable name="logArchiveFileName" value="${date:format=yyyyMMdd}_{#}.txt"/>
<variable name="logLayout" value="${date:format=yyyy-MM-dd HH\:mm\:ss.fff} [${level}] ${message}"/>
<!--
See https://github.com/nlog/nlog/wiki/Configuration-file
for 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 xsi:type="File" name="info"
layout="${logLayout}"
fileName="${logDir}/info/${logFileName}"
archiveFileName="${logDir}/info/${logArchiveFileName}"
archiveAboveSize="10485760"
archiveNumbering="Sequence"
maxArchiveFiles="100"
concurrentWrites="true"
keepFileOpen="true"
openFileCacheTimeout="30"
encoding="UTF-8" />
<target xsi:type="File" name="debug"
layout="${logLayout}"
fileName="${logDir}/debug/${logFileName}"
archiveFileName="${logDir}/debug/${logArchiveFileName}"
archiveAboveSize="10485760"
archiveNumbering="Sequence"
maxArchiveFiles="100"
concurrentWrites="true"
keepFileOpen="true"
openFileCacheTimeout="30"
encoding="UTF-8" />
<target xsi:type="File" name="error"
layout="${logLayout}"
fileName="${logDir}/error/${logFileName}"
archiveFileName="${logDir}/error/${logArchiveFileName}"
archiveAboveSize="10485760"
archiveNumbering="Sequence"
maxArchiveFiles="100"
concurrentWrites="true"
keepFileOpen="true"
openFileCacheTimeout="30"
encoding="UTF-8" />
<target xsi:type="File" name="warn"
layout="${logLayout}"
fileName="${logDir}/warn/${logFileName}"
archiveFileName="${logDir}/warn/${logArchiveFileName}"
archiveAboveSize="10485760"
archiveNumbering="Sequence"
maxArchiveFiles="100"
concurrentWrites="true"
keepFileOpen="true"
openFileCacheTimeout="30"
encoding="UTF-8" />
</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" />
-->
<logger name="*" minlevel="Info" maxlevel="Info" writeTo="info" />
<logger name="*" minlevel="Debug" maxlevel="Debug" writeTo="debug" />
<logger name="*" minlevel="Error" maxlevel="Error" writeTo="error" />
<logger name="*" minlevel="Warn" maxlevel="Warn" writeTo="warn" />
</rules>
</nlog>
定义了5种log类型Debug,Info,Debug,Error,Warn,详细配置可以自己定义。
定义一个常用的log类
public class NLogHelper
{
private static Logger _log = NLog.LogManager.GetCurrentClassLogger();
/// <summary>
/// Debug日志
/// </summary>
/// <param name="log"></param>
public static void Debug(string log)
{
_log.Debug(log);
}
/// <summary>
/// Error日志
/// </summary>
/// <param name="log"></param>
public static void Error(string log)
{
_log.Error(log);
}
/// <summary>
/// Warn日志
/// </summary>
/// <param name="log"></param>
public static void Warn(string log)
{
_log.Warn(log);
}
/// <summary>
/// Info日志
/// </summary>
/// <param name="log"></param>
public static void Info(string log)
{
_log.Info(log);
}
/// <summary>
/// 详细异常日志
/// </summary>
/// <param name="ex"></param>
public static void Exception_Error(Exception ex)
{
try
{
if (ex != null)
{
StringBuilder strBuilder = new StringBuilder();
strBuilder.Append("【异常日志消息】");
strBuilder.AppendLine(ex.Message);
strBuilder.Append("【异常日志Trace】");
strBuilder.AppendLine(ex.StackTrace);
strBuilder.Append("【异常日志全部】");
strBuilder.Append(ex.ToString());
_log.Error(strBuilder.ToString());
}
}
catch (Exception)
{
}
}
}
调用代码
NLogHelper.Info($"系统正在运行中...");