NLog使用说明

NLog是一个基于.NET平台编写的类库,我们可以使用NLog在应用程序中添加极为完善的跟踪调试代码。

NLog允许我们自定义从跟踪消息的来源(source)到记录跟踪信息的目标(target)规则(rules)。记录跟踪信息的目标(target)可以为如下几种形式:

  1. 文件
  2. 文本控制台
  3. Email
  4. 数据库
  5. 网络中的其它计算机(通过TCP或UDP)
  6. 基于MSMQ的消息队列
  7. Windows系统日志

第一步:安装NLog,通过Nuget程序控制器,下载并安装NLog。

  注意:搜索NLog时,会出现两个。先安装NLog,然后安装NLog Configuration。然后会自动添加几个文件。如下图:

      

       

第二步:配置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="c:	emp
log-internal.log">
  <variable name="myvar" value="myvalue"/>
  <!-- BUG等级设置:Trace<<Debug<<Info<<Warn<<Error<<Fatal -->
  <!-- 设置时间代码:${date:format=yyyy-MM-dd HH:mm:ss} -->
  <targets>
    <target xsi:type="Console" name="console" layout="[${date:format=yyyy-MM-dd HH:mm:ss}][${level}] ${message} ${exception}"/>
    <target xsi:type="File" fileName="${date:format=yyyy-MM-dd}.txt" name="logfile"/>
  </targets>
  
  <!-- 注意:minlevel:日志的最小等级;writeTo:指向对应的target;final:同等级下的规则,该规则是否是唯一的;-->
  <rules>
    <logger name="*" minlevel="Trace" writeTo="console" final="true"></logger>
    <logger name="*" minlevel="Trace" writeTo="logfile"></logger>
  </rules>
</nlog>

  配置信息拓展:    

Logger标签对,控制输出范围与水平

name属性:

指定哪些代码段要输出信息,例如:“<logger name="SomeNamespace.Component.*" …”,只输出SomeNamespace.Component域里面打印的信息。

minLevel属性:

    指定输出等级,Logging 水平分为以下等级“Trace<<Debug<<Info<<Warn<<Error<<Fatal ”,如果我们选择Info值,则Trace和Debug等级的信息不会被输出。

writeTo属性:

       指定使用那个“Target标签对”来输出信息

Final属性:

       这个属性若设置为true,则被当前Logger标签对输出的消息类型,不再被下一个Logger标签对处理。

Target标签对,输出格式,输出到哪里

Name属性:

target标签对的名称

Type属性:

target的类型,比如target=”File”。还有“Database”,“Mail”,“Network”等类型。

Silverlight使用文件输出,需将项目设置为Out of browser模式

fileName属性:

若target类型为File,则可以指定输出文件名。

例:

fileName=”file.txt”,

fileName="${basedir}/App_Data/log.txt",

fileName="${basedir}/log.txt",

fileName ="${specialfolder:MyDocuments}/log.${shortdate}.txt"

fileName="${logger}.txt"

fileName="${shortdate}.txt"

fileName="${windows-identity:domain=false}.txt

fileName="${shortdate}/${windows-identity:domain=false}.txt"

如果是Silverlight项目可能不能指定输出文件到App_Data目录下。

Layout属性:

格式化输出日志信息。例:

layout="${date:format=HH:mm:ss}|${level}|${stacktrace}|${message}"

layout="[${date:format=yyyy-MM-ddHH:mm:ss}][${level}] ${message} ${exception}"

layout="${longdate}${callsite} ${level} ${message}"

address属性:

指定日志信息输出到哪个网络服务器,例:

<targetname="n1" xsi:type="Network"address="tcp://localhost:4001"/>

第三步:代码使用。

 private static Logger logger = LogManager.GetCurrentClassLogger();

        public static void Main(string[] args)
        {
            logger.Error("test1");
            logger.Trace("写入到文件");
             
            Console.ReadKey();
        }

效果展示:

原文地址:https://www.cnblogs.com/siaslfslovewp/p/6128046.html