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 类对象进行日志记录,代码如下:
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" /> ,方便快速定位问题。
参考资料
- 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学习笔记一的更多相关文章
- [转]NLog学习笔记二:深入学习
本文转自:http://www.cnblogs.com/CCHUncle/p/5207735.html 配置文件 NLog所有的配置信息都可以写到一个单独的xml文件中,也可以在程序代码中进行配置. ...
- NLog学习笔记二:深入学习
配置文件 NLog所有的配置信息都可以写到一个单独的xml文件中,也可以在程序代码中进行配置. 配置文件位置 启动的时候,NLog会试图查找配置文件完成自动配置,查找的文件依次如下(找到配置信息则结束 ...
- Asp.Net Core WebApi学习笔记(四)-- Middleware
Asp.Net Core WebApi学习笔记(四)-- Middleware 本文记录了Asp.Net管道模型和Asp.Net Core的Middleware模型的对比,并在上一篇的基础上增加Mid ...
- [学习笔记] 多项式与快速傅里叶变换(FFT)基础
引入 可能有不少OIer都知道FFT这个神奇的算法, 通过一系列玄学的变化就可以在 $O(nlog(n))$ 的总时间复杂度内计算出两个向量的卷积, 而代码量却非常小. 博主一年半前曾经因COGS的一 ...
- 仙人掌&圆方树学习笔记
仙人掌&圆方树学习笔记 1.仙人掌 圆方树用来干啥? --处理仙人掌的问题. 仙人掌是啥? (图片来自于\(BZOJ1023\)) --也就是任意一条边只会出现在一个环里面. 当然,如果你的图 ...
- dsu on tree学习笔记
前言 一次模拟赛的\(T3\):传送门 只会\(O(n^2)\)的我就\(gg\)了,并且对于题解提供的\(\text{dsu on tree}\)的做法一脸懵逼. 看网上的其他大佬写的笔记,我自己画 ...
- 「学习笔记」FFT 快速傅里叶变换
目录 「学习笔记」FFT 快速傅里叶变换 啥是 FFT 呀?它可以干什么? 必备芝士 点值表示 复数 傅立叶正变换 傅里叶逆变换 FFT 的代码实现 还会有的 NTT 和三模数 NTT... 「学习笔 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
随机推荐
- 使用 EntityFramework后把一个对象序列化成json字符串引起循环引用的问题
先看一个T4模板生成的model实体类 著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:卷猫 链接:http://anneke.cn/ArticleInfo/Detial ...
- linux日常管理-防火墙netfilter工具-iptables-2
分别是包的数量:26 包的字节:1320 处理方式 tcp协议 opt in out 源ip 目标ip 到80端口的行为. 处理行为处理有REJECT外 还有DROP ACCEPT.分别是看一 ...
- 由hibernate配置inverse="true"而导致的软件错误,并分析解决此问题的过程
题目背景软件是用来做安装部署的工具,在部署一套系统时会有很多安装包,通过此工具,可以生成一个xml文件用以保存每个安装包的文件位置.顺序.参数.所需脚本.依赖条件验证(OS..net.IIS.数据版本 ...
- JavaScript的内部对象
JavaScript的内部对象 按创建方式不同分为:使用变量声明的隐性对象,使用new创建的显性对象 隐性对象 在赋值和声明后就是一个隐性对象,隐性对象不支持prototype属性,也无法随意扩展对象 ...
- Eclipse插件——EasyExplore安装
Eclipse插件--EasyExplore安装 分类: eclipse2011-12-07 09:02 458人阅读 评论(0) 收藏 举报 插件功能 easyexplore是一个eclipse的小 ...
- 打开*.gd文件的方法
问题来了: 你可能会收到*.gd的公文,那么一般的阅读器都打不开…… 解决方法: 使用书生阅读器(三合一版)来打开 地址:http://www.du8.com/download/index.html
- C#——各种参数,扩展方法
余近日复习C#之基础知识,故作一随笔,也是对此前几篇博客中所记录的传值参数相关内容之汇总,还望诸位加以批评指正. 该博客包括以下内容: 传值参数 引用参数 输出参数 数组参数 具名参数 可选参数 扩展 ...
- HTML5学习笔记(七)HTML5 服务器发送事件(Server-Sent Events)
Server-Sent 事件指的是网页自动获取来自服务器的更新. 以前也可能做到这一点,前提是网页不得不询问是否有可用的更新.通过服务器发送事件,更新能够自动到达. EventSource 对象用于接 ...
- 关于nginx的使用感想
感慨: 最近老板说要转型NodeJs,所以接连用ThinkJS框架写了2个项目(不过通篇弱类型不用考虑class是真的爽啊...).那天老板又正好让我看看Ngxin的负载均衡和静态资源处理,那现在就写 ...
- Mysql导入导出数据库11111
导出: 通过命令行 在MYSQL中的bin文件夹的目录下 输入:D:\phpStudy\MySQL\bin>mysqldump -uroot -p 数据库名 > 导出的文件名 导入: 需 ...