码迷,mamicode.com
首页 > 其他好文 > 详细

NLOG

时间:2017-09-14 20:15:33      阅读:294      评论:0      收藏:0      [点我收藏+]

标签:var   子节点   简单的   bug   mat   conf   rac   日志   file   

 

NLog的配置和使用(一)

标签: Nlogc#

NLog是一款拥有丰富的途径选择和管理能力的可用于.net、Silverlight和Windows Phone的免费开源框架.它可以将任何.net语言产生的调试信息转化为上下文信息(包括日期和时间,严重程度,进程,线程,环境信息),根据你喜好的形式发送到一个或者多个目标存储。那么,我们如何在一个应用程序上配置使用NLog,将日志输出到控制台和文件?
首先,打开VS2012创建一个控制台应用程序,添加NLog.dll引用。

在Program.cs文件中,获取一个Logger实例,取名为NLogConsoleExample(名字可任意),也可采用 LogManager.GetCurrentClassLogger()来获取一个以当前类名为名称的Logger实例;然后我们在main方法中添加几行简单调用NLog输出不同级别的日志信息的代码,如下图:
技术分享
技术分享

接下来,开始配置NLog配置文件,NLog配置文件支持两种方式:
1)是将配置写到应用程序的配置文件(通常是applicationName.exe.config)或者Web.config文件中;
2)独配置到一个文件,通常是NLog.config
    这里采用第一种方法,首先我们需要在配置文件中增加如下形式的配置

<configuration>
<configSections>
<section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
</configSections>
<nlog>
</nlog>
</configuration>
在<nlog />节点中,有五个子节点可让我们配置,前两个节点是配置必须的,而后面的几个是可选,可用于更高级的场景。
  • <targets /> –定义日志记录输出的目标位置,可以配置为输出到控制台,文件,数据库,事件日志等等
  • <rules /> –定义日志输出路径规则
  • <extensions /> –定义从某个*.dll获取Nlog扩展
  • <include />– 包含外部的配置文件
  • <variable /> – 设置配置变量的值
简单的配置如下图,标出的序号要点在图下方将进行讲解注释。
技术分享
技术分享
注释:
  1. autoReload="true"表示在不重新启动应用程序的情况下,修改配置文件,NLog会自动加载应用;
  2. internalLogLevel="Trace"internalLogFile="logs/internalLog.txt"这个设置可以将NLog内部的日志消息写到应用程序目录下的logs文件夹里的internalLog.txt文件中;(这个配置常用于调试Nlog的配置是否正确,调试完成后,最好关闭以提高性能)
  3. <target>的配置:type="File|Console" 属性是设置日志输出目标是"File"(文件)或者"Console"(控制台);
    type="File"的时候要指定fileName属性, fileName="${basedir}/logs/${shortdate}.log" 设置日记记录文件的路径和名称,即应用程序下的log目录里格式为yyyy-MM-DD.log;
    layout="${date:format=yyyyMMddHHmmss} ${callsite} ${level} ${message}" 设置日志输出格式(可查阅官网说明).
  4. name="NLogConsoleExample"表示配置的规则适用于Logger名称为“NLogConsoleExample”,如果填*,则表示所有的Logger都运用这个规则。
  5. minlevel="Debug"maxlevel="Error"用来配置记录的级别为最小是"Debug"最大为"Error"(备注:此处也可以用levels="Debug,Error"来设置,说明只输出Debug级别以及Error级别的日志,官网此处解说有误:技术分享技术分享)
  6. writeTo="t1,t2"其中t1,t2分别代表上面设置的targets名称为t1以及t2的目标输出,此处表示将分别将日志信息输出到文件和控制台。

附上整个配置文件的完整代码:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
</configSections>
<nlog autoReload="true" internalLogLevel="Trace" internalLogFile="logs/internalLog.txt">
<targets>
<target name="t1" type="File" fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate} ${callsite} ${level}:
${message} ${event-context:item=exception} ${stacktrace} ${event-context:item=stacktrace}"/>
<target name="t2" type="Console" layout="${date:format=yyyyMMddHHmmss} ${callsite} ${level} ${message}"/>
</targets>
<rules>
<logger name="NLogConsoleExample" minlevel="Debug" maxlevel="Error" writeTo="t1,t2" />
</rules>
</nlog>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
 
最后示例结果显示:
图一:运行程序后,控制台输出指定格式的符合设置级别(Debug到Error)的日志信息,并且在应用程序目录生成一个名为logs的目录。
技术分享
技术分享
图二:logs目录下分别含有记录Nlog内部跟踪日志信息的文件internalLog.txt以及形式为yyyy-MM-DD.log的存放对应级别(Debug到Error)的日志输出。
技术分享
技术分享
图三:2016-07-15.log内容展示:
技术分享
技术分享
图四:internalLog.txt内容展示:(这个文件记录的内容常用于调试Nlog一些配置错误或者其他内部错误)
技术分享
技术分享
PS:NLog官网地址 http://nlog-project.org/

NLOG

标签:var   子节点   简单的   bug   mat   conf   rac   日志   file   

原文地址:http://www.cnblogs.com/Li-yuan/p/7522121.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!