NLog学习笔记一

时间:2023-03-10 00:31:26
NLog学习笔记一

一、NLog是什么?

NLog是一个基于.NET的免费的开源的日志记录类库。(官网:http://nlog-project.org/

NLog特点如下:

  1. 配置简单方便。可以将配置信息写的应用程序的配置文件中,或者写到单独的 NLog.config 配置文件中。
  2. 修改配置信息后立即生效,不用重启应用程序。通过设置 <nlog autoReload="true" /> 来实现。
  3. 内置了丰富的模板变量layout renders。例如: ${date} , ${level} ,  ${message} 等。
  4. 可以将日志记录到多个目标targets。例如:控制台、输出窗口、文件、数据库、邮件等。
  5. 支持扩展,可自定义目标

使用NLog的理由如下:

  1. 能够通过简单的配置和修改控制显示不同等级的跟踪信息。
  2. 将控制跟踪信息的显示与否的逻辑与代码分开,修改跟踪信息的显示不需要重新编译程序。

二、第一个NLog程序

1、创建控制台程序

此处只是为测试NLog,所以创建一个简单控制台应用程序,名称为NLogConsoleDemo,如图:

NLog学习笔记一

注意:此处选择的程序位置应选择应用程序可以创建文件的路径。

2、引用NLog程序集

可以通过两种方式应用NLog,分别如下:

1)通过程序包管理控制台安装,命令如下: PM> Install-Package NLog.Config 。(推荐

2)通过官网下载源码。

通过方式一安装结果如图:

NLog学习笔记一

NLog学习笔记一

注意:一定要修改NLog.config文件的属性中复制到输出目录的值为始终复制如果较新则复制

3)添加代码

建议通过 LogManager 创建一个私有静态( private sttatic )的 Logger 类对象进行日志记录,代码如下:

 using NLog;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace NLogConsoleDemo
{
class Program
{
private static Logger logger = LogManager.GetCurrentClassLogger(); static void Main(string[] args)
{
LogTest();
LogTest2(); Console.ReadLine();
} public static void LogTest()
{
logger.Trace("Sample trace message");
logger.Debug("Sample debug message");
logger.Info("Sample informational message");
logger.Warn("Sample warning message");
logger.Error("Sample error message");
logger.Fatal("Sample fatal error message"); // alternatively you can call the Log() method
// and pass log level as the parameter.
logger.Log(LogLevel.Info, "Sample informational message");
} public static void LogTest2()
{
int k = ;
int l = ; logger.Trace("Sample trace message, k={0}, l={1}", k, l);
logger.Debug("Sample debug message, k={0}, l={1}", k, l);
logger.Info("Sample informational message, k={0}, l={1}", k, l);
logger.Warn("Sample warning message, k={0}, l={1}", k, l);
logger.Error("Sample error message, k={0}, l={1}", k, l);
logger.Fatal("Sample fatal error message, k={0}, l={1}", k, l);
logger.Log(LogLevel.Info, "Sample informational message, k={0}, l={1}", k, l);
}
}
}

4)配置NLog

可以在应用程序配置文件或NLog.config文件中配置NLog,此处我们直接修改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" > <targets>
<!--屏幕打印消息-->
<target name="console" xsi:type="ColoredConsole" layout="${date:format=yyyy-MM-dd HH\:MM\:ss.ffff} | ${message}"/>
<!--VS输出窗口-->
<target name="debugger" xsi:type="Debugger" layout="${shortdate} | ${level:padding=-5} | ${message}" />
<!--保存至文件-->
<target name="error_file" xsi:type="File" maxArchiveFiles="" fileName="${basedir}/logs/error.log" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="console" />
<logger name="*" minlevel="Debug" writeTo="debugger" />
<logger name="*" minlevel="Error" writeTo="error_file" />
</rules>
</nlog>

现在可以编译运行程序,测试运行是否正常。正常情况下,我们可以在控制台、输出窗口和日志文件中看到记录的日志信息。

注意:在开发阶段,建议设置 <nlog throwExceptions="true" /> ,方便快速定位问题。

参考资料

  1. http://nlog-project.org/
  2. https://github.com/NLog/NLog/wiki/Tutorial
  3. http://www.cnblogs.com/dflying/category/78087.html
  4. http://www.cnblogs.com/TianFang/p/4003749.html