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. 整体架构图 ...
随机推荐
- Ruby中的%表示法
%{String} 用于创建一个使用双引号括起来的字符串,这个表示法与%Q{String}完全一样 result = %{hello} puts "result is: #{result ...
- [java] volatile关键字对while循环条件提升问题补充
在java并发编程中,代码如下: volatile boolean asleep; ... while(!asleep){ countSomeSheep(); } 如果此处忘记将asleep变量设置为 ...
- USACO-Friday the Thirteenth(黑色星期五)-Section1.2<3>
[英文原题] Friday the Thirteenth Is Friday the 13th really an unusual event? That is, does the 13th of t ...
- 转:JMeter整合InfluxDB,Grafana让测试结果实时显示
软件版本: apache-jmeter-2.13.tgz grafana-2.1.1-1.x86_64.rpm influxdb-0.8.8-1.x86_64.rpm 虽然官方不在支持influxdb ...
- UCSC数据库数据调用cruzdb
https://github.com/Wy2160640/cruzdb UCSC基因组数据库是注释,调节和变异以及越来越多的分类群的各种数据的重要资源. 该库旨在简化数据的利用,以便我们可以进行复杂的 ...
- 8、scala面向对象编程之Trait
一.Trait基础 1.将trait作为接口使用 // Scala中的Triat是一种特殊的概念 // 首先我们可以将Trait作为接口来使用,此时的Triat就与Java中的接口非常类似 // 在t ...
- 由count(sno)和count(cno)引发的思考
最近在练习sql语句,在一个select查询语句上有理解性偏差,现整理汇总下相关知识点. 首先,说下这个问题吧. 问题是:查询选课人数大于等于2人的课程编号以及选课的人数 具体的表结构信息: 我自己的 ...
- 1.1 xss原理分析与剖析(2)
0×01 反射型XSS: 反射XSS是XSS分类中最多的,他们原理是下面这样: Hacker——发现存在反射XSS的URL——根据输出点的环境构造XSS代码——进行编码.缩短(可有可无,是为了增加迷惑 ...
- [转]Node.JS package.json 字段全解析
Name 必须字段. 小提示: 不要在name中包含js, node字样: 这个名字最终会是URL的一部分,命令行的参数,目录名,所以不能以点号或下划线开头: 这个名字可能在require()方法中被 ...
- Spring MVC 基于Method的映射规则(注解版)
在Restful风格的web开发中,根据不同的请求方法使用相应的控制器处理逻辑成为核心需求,下面就看看如何在Spring MVC中识别不同的请求方法. 请求方法 在Http中,请求的方法有很多种,最常 ...