NLog是实用于各种.NET平台(包含.NET规范)的灵便,收费的日志记录平台,NLog可将日志写入多个指标,比方Database、File、Console、Mail。上面介绍下NLog的根本应用办法。

应用步骤

增加援用

装置NLog Nuget package:Install-Package NLog.Config;

增加配置文件
  1. 在我的项目中增加一个配置文件(也能够间接将NLog的配置我的项目放入*.exe.config中),重命名为NLog.config;
  2. 更改如下两项属性内容:

    • 复制到输入目录 - 如果较新则复制
    • 生成操作 - 内容
  3. 增加配置内容,上面展现的是GitHub上的示例配置:
<?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>        <!-- 输入到文件 -->        <target name="logfile" xsi:type="File" fileName="file.txt" />        <!-- 输入到控制台 -->        <target name="logconsole" xsi:type="Console" />    </targets>    <!-- 定义输入规定,可配置多个 -->    <rules>        <logger name="*" minlevel="Info" writeTo="logconsole" />        <logger name="*" minlevel="Debug" writeTo="logfile" />    </rules></nlog>
  1. 创立Logger类,获取NLog.Logger实例:
public class Log{    // ...    private static readonly NLog.Logger Logger =         NLog.LogManager.GetCurrentClassLogger();}

配置示例

如下配置为自己罕用配置,可参考该配置及GitHub领导文档自定义配置:

留神:首次应用NLog时,可先将throwExceptions置为true,这样如果配置有问题没有胜利打印日志,VS会抛出异样,不便定位起因。调试好后,再将该项置为false。

另外:示例中fileName(日志文件全门路名称)是通过后盾代码配置的,这样能够动静设置日志的输入地位。

// 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"      throwExceptions="false" autoReload="true" async="true" encoding="UTF-8">  <targets>    <target name="logconsole" xsi:type="Console"             layout="${date:format=HH\:mm\:ss} | ${level:padding=-5} | ${message}"/>    <target name="logfile" xsi:type="File" createDirs="true" keepFileOpen="true"            fileName="${gdc:logDirectory:whenEmpty=${baseDir}}/logs/${shortdate}/Whiteboard.log"            archiveFileName="${gdc:logDirectory:whenEmpty=${baseDir}/logs/${shortdate}}/Whiteboard_{##}.log"            archiveAboveSize="102400" archiveNumbering="Sequence" maxArchiveDays="30"            layout="${longdate} | ${level:uppercase=false:padding=-5} | ${message} ${onexception:${exception:format=tostring} ${newline} ${stacktrace} ${newline}"/>  </targets>  <rules>    <logger name="*" minlevel="Debug" writeTo="logconsole"/>    <logger name="*" minlevel="Debug" writeTo="logfile" />  </rules></nlog>// Log.cs 设置日志文件输入地位string logDir = Path.Combine(Environment.GetFolderPath(    Environment.SpecialFolder.LocalApplicationData),    Process.GetCurrentProcess().ProcessName);NLog.GlobalDiagnosticsContext.Set("logDirectory", logDir);