NLog学习笔记一

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,如图:

技术分享

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

2、引用NLog程序集

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

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

2)通过官网下载源码。

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

技术分享

技术分享

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

3)添加代码

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

技术分享
 1 using NLog;
 2 using System;
 3 using System.Collections.Generic;
 4 using System.Linq;
 5 using System.Text;
 6 using System.Threading.Tasks;
 7 
 8 namespace NLogConsoleDemo
 9 {
10     class Program
11     {
12         private static Logger logger = LogManager.GetCurrentClassLogger();
13 
14         static void Main(string[] args)
15         {
16             LogTest();
17             LogTest2();
18 
19             Console.ReadLine();
20         }
21 
22         public static void LogTest()
23         {
24             logger.Trace("Sample trace message");
25             logger.Debug("Sample debug message");
26             logger.Info("Sample informational message");
27             logger.Warn("Sample warning message");
28             logger.Error("Sample error message");
29             logger.Fatal("Sample fatal error message");
30 
31             // alternatively you can call the Log() method 
32             // and pass log level as the parameter.
33             logger.Log(LogLevel.Info, "Sample informational message");
34         }
35 
36         public static void LogTest2()
37         {
38             int k = 42;
39             int l = 100;
40 
41             logger.Trace("Sample trace message, k={0}, l={1}", k, l);
42             logger.Debug("Sample debug message, k={0}, l={1}", k, l);
43             logger.Info("Sample informational message, k={0}, l={1}", k, l);
44             logger.Warn("Sample warning message, k={0}, l={1}", k, l);
45             logger.Error("Sample error message, k={0}, l={1}", k, l);
46             logger.Fatal("Sample fatal error message, k={0}, l={1}", k, l);
47             logger.Log(LogLevel.Info, "Sample informational message, k={0}, l={1}", k, l);
48         }
49     }
50 }
View Code

4)配置NLog

可以在应用程序配置文件或NLog.config文件中配置NLog,此处我们直接修改NLog.config文件,修改后如下:

技术分享
 1 <?xml version="1.0" encoding="utf-8" ?>
 2 <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
 3       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4       xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
 5       autoReload="true"
 6       throwExceptions="false"
 7       internalLogLevel="Off" internalLogFile="c:\\temp\\nlog-internal.log" >
 8 
 9   <targets>
10     <!--屏幕打印消息-->
11     <target name="console" xsi:type="ColoredConsole" layout="${date:format=yyyy-MM-dd HH\\:MM\\:ss.ffff} | ${message}"/>
12     <!--VS输出窗口-->
13     <target name="debugger" xsi:type="Debugger" layout="${shortdate} | ${level:padding=-5} | ${message}" />
14     <!--保存至文件-->
15     <target name="error_file" xsi:type="File" maxArchiveFiles="30" fileName="${basedir}/logs/error.log" />
16   </targets>
17   <rules>
18     <logger name="*" minlevel="Trace" writeTo="console" />
19     <logger name="*" minlevel="Debug" writeTo="debugger" />
20     <logger name="*" minlevel="Error" writeTo="error_file" />
21   </rules>
22 </nlog>
View Code

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

参考资料

  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

以上是关于NLog学习笔记一的主要内容,如果未能解决你的问题,请参考以下文章

译丨Yarn - Javascript 新一代套件管理

学习笔记:python3,代码片段(2017)

新一代流式数据湖平台 Apache Hudi学习笔记 - 基础知识&定义

新一代流式数据湖平台 Apache Hudi学习笔记 - 基础知识&定义

DOM探索之基础详解——学习笔记

NLog学习