NLog学习笔记一
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NLog学习笔记一相关的知识,希望对你有一定的参考价值。
一、NLog是什么?
NLog是一个基于.NET的免费的开源的日志记录类库。(官网:http://nlog-project.org/)
NLog特点如下:
- 配置简单方便。可以将配置信息写的应用程序的配置文件中,或者写到单独的 NLog.config 配置文件中。
- 修改配置信息后立即生效,不用重启应用程序。通过设置 <nlog autoReload="true" /> 来实现。
- 内置了丰富的模板变量layout renders。例如: ${date} , ${level} , ${message} 等。
- 可以将日志记录到多个目标targets。例如:控制台、输出窗口、文件、数据库、邮件等。
- 支持扩展,可自定义目标。
使用NLog的理由如下:
- 能够通过简单的配置和修改控制显示不同等级的跟踪信息。
- 将控制跟踪信息的显示与否的逻辑与代码分开,修改跟踪信息的显示不需要重新编译程序。
二、第一个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 }
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>
现在可以编译运行程序,测试运行是否正常。正常情况下,我们可以在控制台、输出窗口和日志文件中看到记录的日志信息。
参考资料
- http://nlog-project.org/
- https://github.com/NLog/NLog/wiki/Tutorial
- http://www.cnblogs.com/dflying/category/78087.html
- http://www.cnblogs.com/TianFang/p/4003749.html
以上是关于NLog学习笔记一的主要内容,如果未能解决你的问题,请参考以下文章
新一代流式数据湖平台 Apache Hudi学习笔记 - 基础知识&定义