首页 > 代码库 > NLog使用说明

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:\temp\nlog-internal.log">  <variable name="myvar" value=http://www.mamicode.com/"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();        }

效果展示:

技术分享

技术分享

 

NLog使用说明