一、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 类对象进行日志记录,代码如下:

 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

NLog学习笔记一的更多相关文章

  1. [转]NLog学习笔记二:深入学习

    本文转自:http://www.cnblogs.com/CCHUncle/p/5207735.html 配置文件 NLog所有的配置信息都可以写到一个单独的xml文件中,也可以在程序代码中进行配置. ...

  2. NLog学习笔记二:深入学习

    配置文件 NLog所有的配置信息都可以写到一个单独的xml文件中,也可以在程序代码中进行配置. 配置文件位置 启动的时候,NLog会试图查找配置文件完成自动配置,查找的文件依次如下(找到配置信息则结束 ...

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

    Asp.Net Core WebApi学习笔记(四)-- Middleware 本文记录了Asp.Net管道模型和Asp.Net Core的Middleware模型的对比,并在上一篇的基础上增加Mid ...

  4. [学习笔记] 多项式与快速傅里叶变换(FFT)基础

    引入 可能有不少OIer都知道FFT这个神奇的算法, 通过一系列玄学的变化就可以在 $O(nlog(n))$ 的总时间复杂度内计算出两个向量的卷积, 而代码量却非常小. 博主一年半前曾经因COGS的一 ...

  5. 仙人掌&圆方树学习笔记

    仙人掌&圆方树学习笔记 1.仙人掌 圆方树用来干啥? --处理仙人掌的问题. 仙人掌是啥? (图片来自于\(BZOJ1023\)) --也就是任意一条边只会出现在一个环里面. 当然,如果你的图 ...

  6. dsu on tree学习笔记

    前言 一次模拟赛的\(T3\):传送门 只会\(O(n^2)\)的我就\(gg\)了,并且对于题解提供的\(\text{dsu on tree}\)的做法一脸懵逼. 看网上的其他大佬写的笔记,我自己画 ...

  7. 「学习笔记」FFT 快速傅里叶变换

    目录 「学习笔记」FFT 快速傅里叶变换 啥是 FFT 呀?它可以干什么? 必备芝士 点值表示 复数 傅立叶正变换 傅里叶逆变换 FFT 的代码实现 还会有的 NTT 和三模数 NTT... 「学习笔 ...

  8. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  9. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

随机推荐

  1. linux 下 安装mysql

    安装之前,因为redhat 是yum自带的,但是不能使用,因为要交钱,还要订阅,所以需要卸载,重新安装163提供的yum 在另外一篇文章介绍 yum list mysql* 列出所有关于mysal的安 ...

  2. JAVA基础知识总结4(面向对象特征之一:封装)

    封 装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. 好处:将变化隔离:便于使用:提高重用性:安全性. 封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问. th ...

  3. linux-java环境安装以及ssh

    1 下载Java8   http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2 使用 ...

  4. C++中对象的常引用

    直接传递对象名 用对象名做函数参数时,在函数调用时将建立一个新的对象,它是形参对象的拷贝. ================下面给出一个直接传递对象名的例子程序1.1================= ...

  5. sklearn实现聚类

    import numpy as np from sklearn import datasets from sklearn.cross_validation import train_test_spli ...

  6. Luogu 4868 Preprefix sum

    类似于树状数组维护区间的方法. 每一次询问要求$\sum_{i = 1}^{n}\sum_{j = 1}^{i}a_j$. 展开一下: $\sum_{i = 1}^{n}\sum_{j = 1}^{i ...

  7. 我的笔记文档版本控制系统-MediaWiki-目录悬浮+隐藏

    13年11份把北京的工作辞了,出去从北到南找同学玩了二十多天,因为各种原因,回家(宁夏)找工作,想找一个Linux相关的工作,但涉及Linux的都是运维.支持一类,最后因为各种原因找了个做java的本 ...

  8. 主元素问题(Java)

    x称为一个长度为n的数组的a的主元素,如果这个数组里面等于x的元素的数目不少于n/2个. 例如,a={2,3,2,2,5,3,2,4,2},x=2就是这个主元素.给定包含n个元素的数组a,主元素问题就 ...

  9. 【leetcode 239. 滑动窗口最大值】解题报告

    思路:滑动窗口的思想,只要是求连续子序列或者子串问题,都可用滑动窗口的思想 方法一: vector<int> maxSlidingWindow(vector<int>& ...

  10. 图解SSH上传安装eclipse

    安装eclipse 步骤: 1.SSH上传eclipse tar文件 2.linux下Computer-->FilesSystem-->soft显示上传的压缩包 3.解压eclipse文件 ...