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 }

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>

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

参考资料

  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
时间: 2024-10-19 09:44:30

NLog学习笔记一的相关文章

NLog学习笔记二:深入学习

配置文件 NLog所有的配置信息都可以写到一个单独的xml文件中,也可以在程序代码中进行配置. 配置文件位置 启动的时候,NLog会试图查找配置文件完成自动配置,查找的文件依次如下(找到配置信息则结束查询): 应用程序的标准配置文件(通常为applicationname.exe.config) 应用程序所在目录中的applicationname.exe.nlog文件 应用程序所在目录中的NLog.config文件 NLog.dll所在目录中的NLog.dll.nlog文件 环境变量NLOG_GL

Asp.Net Core WebApi学习笔记(四)-- Middleware

Asp.Net Core WebApi学习笔记(四)-- Middleware 本文记录了Asp.Net管道模型和Asp.Net Core的Middleware模型的对比,并在上一篇的基础上增加Middleware功能支持. 在演示Middleware功能之前,先要了解一下Asp.Net管道模型发生了什么样的变化. 第一部分:管道模型 1. Asp.Net管道 在之前的Asp.Net里,主要的管道模型流程如下图所示: 请求进入Asp.Net工作进程后,由进程创建HttpWorkRequest对象

【数据结构学习笔记(C#描述)】(二)算法分析

由上一章的内容可知软件质量的重要特征之一就是能够高效的利用资源(运行效率),因此我们就要考虑如何创建出能够高效利用CPU及内存的数据结构与算法.而算法分析的目的就是为了让我们能够认识到算法对于资源的利用效率. 我们要想分析算法的效率,就需要找到一个评价算法效率的标准及方法. 一般我们如果能快速的利用CPU就会更好的节省时间,因此在时间层面上我们的评价标准就是时间复杂度,而如果我们能够较好的利用内存的话我们将会节省更多的内存空间,因此在空间层面上我们的评价标准就是空间复杂度. 所谓时间复杂度和空间

数据结构学习笔记——线性表的应用

数据结构学习笔记——线性表的应用 线性表的应用 线性表的自然连接 计算任意两个表的简单自然连接过程讨论线性表的应用.假设有两个表A和B,分别是m1行.n1列和m2行.n2列,它们简单自然连接结果C=A*B(i==j),其中i表示表A中列号,j表示表B中的列号,C为A和B的笛卡儿积中满足指定连接条件的所有记录组,该连接条件为表A的第i列与表B的第j列相等. 如:         1 2 3                3 5 A  =  2 3 3         B =  1 6       

vector 学习笔记

vector 使用练习: /**************************************** * File Name: vector.cpp * Author: sky0917 * Created Time: 2014年04月27日 11:07:33 ****************************************/ #include <iostream> #include <vector> using namespace std; int main

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则 用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详细,自己在看它的文档和代码时写了一些demo和笔记,还有它实现的原理记录一下 学习Caliburn.Micro要有MEF和MVVM的基础 先说一下他的命名规则和引导类 以后我会把Caliburn.Micro的 Actions IResult,IHandle ICondu

jQuery学习笔记(一):入门

jQuery学习笔记(一):入门 一.JQuery是什么 JQuery是什么?始终是萦绕在我心中的一个问题: 借鉴网上同学们的总结,可以从以下几个方面观察. 不使用JQuery时获取DOM文本的操作如下: 1 document.getElementById('info').value = 'Hello World!'; 使用JQuery时获取DOM文本操作如下: 1 $('#info').val('Hello World!'); 嗯,可以看出,使用JQuery的优势之一是可以使代码更加简练,使开

[原创]java WEB学习笔记93:Hibernate学习之路---Hibernate 缓存介绍,缓存级别,使用二级缓存的情况,二级缓存的架构集合缓存,二级缓存的并发策略,实现步骤,集合缓存,查询缓存,时间戳缓存

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

Activiti 学习笔记记录(三)

上一篇:Activiti 学习笔记记录(二) 导读:上一篇学习了bpmn 画图的常用图形标记.那如何用它们组成一个可用文件呢? 我们知道 bpmn 其实是一个xml 文件