- 浏览: 645021 次
- 性别:
- 来自: 石家庄
文章分类
最新评论
-
abao1:
老贾 在安装IDEA的过程中,在激活步骤时,按如下操作即可: ...
IntelliJ IDEA 2016注册方法和注册码 -
bo_hai:
./usr/bin/java: symbol lookup ...
jmagick安装步骤 -
wxcking:
不错的, 收藏一下
JAVA使用POI生成Excel文件 -
zgyfh:
大哥,密码是多少啊?zgyfh@tom.com谢谢了!新手学习 ...
WPF做的必备示例 -
记忆无泪:
jiasongmao 写道你的邮箱是多少,我可以发源代码到邮箱 ...
WPF做的必备示例
日志配置
下面我们来看一下NLog的配置原理。于其他工具不同,NLog将在程序启动时尝试进行自动配置,换句话说,NLog将自动在某些默认位置中搜索其配置文件。当NLog和标准的exe文件配合使用时,将自动按照顺序搜索下列路径,以得到配置文件:
- 应用程序的标准配置文件(通常为applicationname.exe.config)
- 应用程序所在目录中的applicationname.exe.nlog文件
- 应用程序所在目录中的NLog.config文件
- NLog.dll所在目录中的NLog.dll.nlog文件
- 环境变量NLOG_GLOBAL_CONFIG_FILE所指向的文件
对于ASP.NET应用程序,NLog将自动按照顺序搜索下列路径:
- Web应用程序的标准配置文件——web.config
- web.config所在目录中的web.nlog文件
- 应用程序所在目录中的NLog.config文件
- NLog.dll所在目录中的NLog.dll.nlog文件
- 环境变量NLOG_GLOBAL_CONFIG_FILE所指向的文件
.NET Compact Framework并不支持应用程序配置文件(*.exe.config)以及环境变量,因此NLog将自动按照顺序搜索下列路径:
- 应用程序所在目录中的applicationname.exe.nlog文件
- 应用程序所在目录中的NLog.config文件
- NLog.dll所在目录中的NLog.dll.nlog文件
配置文件形式
NLog支持两种形式的配置文件:
- 嵌入到*.exe.config或web.config等标准配置文件中
- 单独的配置文件
对于第一种形式,我们使用了标准化的configSection机制。这样配置文件将类似如下所示:
<configuration>
<configSections>
<section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
</configSections>
<nlog>
</nlog>
</configuration>
而对于第二种形式,XML配置文件将以<nlog />作为其根节点。XML的命名空间是可选的,但如果按照如下所示指定了命名空间,将会得到Visual Studio的智能感知支持。
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
</nlog>
若不指定XML命名空间,则NLog的配置文件对大小写不敏感。若指定了XML命名空间,则将变为对大小写敏感。智能感知将只能在指定了XML的命名空间时正常工作。
配置文件元素
在配置文件的<nlog />根元素中,我们可以指定如下的子元素。其中前两个是必须设定的,其余三个为可选设定。
- <targets /> - 定义日志的输出目标
- <rules /> - 定义对日志信息进行路由的规则
- <extensions /> - 定义从其他dll文件中加载的NLog扩展模块
- <include /> - 引入外部的配置文件
- <variable /> - 定义配置文件中用到的变量
输出目标(Target)
<targets />配置节用来定义日志信息的输出位置。每一个输出位置都用一个<target />元素表示。<target />元素有两个必须设置的属性:
- name - 输出目标的名称
- type - 输出目标的类型,例如“File”、“DataBase”、“Mail”等。若我们为配置文件指定了命名空间,则该属性名为xsi:type。
除了上述两个必须设置的属性之外,<target />元素还支持一些其他的属性,同样可以影响记录诊断信息的方式。我们可以为每一个输出目标设定不同的属性参数,这些属性均在NLog的主页上有详细描述,且Visual Studio也都为其提供了智能感知功能支持。
例如:“File”输出目标接受一个名为fileName的参数,用来指定输出文件的名称;而“Console”输出目标则接受一个名为error的参数,表示是否用标准错误输出(stderr)代替标准输出(stdout)。
NLog提供了很多与定义的输出目标,这些均在NLog的主页上有详细介绍。若你觉得不够用,并希望能够编写自定义的输出目标,那么也同样非常简单——15-20行代码就够了,请参考Nlog的文档(documentation)。
路由规则(Rule)
路由规则将定义在配置文件的<rules />节中。这部分内容就是一个简单的路由表,用来定义不同的日志源(Logger的名称)以及记录等级的日志信息将被发送至哪个输出目标中。路由规则将从列表中的第一项开始执行,如果符合当前的路由规则,则该条日志信息将被发送至指定的输出目标中,若路由表中任意一项都不满足,则该条日志信息将不会被处理。
路由表中的每一个条目都由一个<logger />元素定义,<logger />元素支持如下几个属性:
- name - 日志源(Logger的名称),可以使用*通配符
- minlevel - 匹配该规则需要的最低记录等级
- maxlevel - 匹配该规则需要的最高记录等级
- level - 匹配该规则需要的单一的记录等级
- levels - 匹配该规则需要的记录等级列表,记录等级之间用逗号隔开
- writeTo - 匹配该规则的日志信息将被发送至的输出目标列表,输出目标之间用逗号隔开
- final - 让该规则成为日志信息的最后一个匹配条目。满足该条规则的日志信息被处理之后,将不会再继续尝试匹配下面定义的路由规则。
一些例子:
来自于命名空间Name.Space下Class1的、记录等级等于或高于Debug的日志信息将被发送至输出目标f1。
<logger name="Name.Space.Class1" minlevel="Debug" writeTo="f1" />
来自于命名空间Name.Space下Class1的、记录等级等于为Debug或Error的日志信息将被发送至输出目标f1。
<logger name="Name.Space.Class1" levels="Debug,Error" writeTo="f1" />
来自于命名空间Name.Space下任意类的任意日志信息将被发送至输出目标f3和f4。
<logger name="Name.Space.*" writeTo="f3,f4" />
来自于命名空间Name.Space下任意类的、记录等级在Debug和Error之间(包括Debug、Info、Warn和Error)的日志信息将被忽略(没有writeTo属性),且也不会再被下面的路由规则处理(因为设置了final="true")。
<logger name="Name.Space.*" minlevel="Debug" maxlevel="Error" final="true" />
在前面的示例程序中,配置文件只包含了一个<target />元素和一个<logger />元素。随着对程序的需求不断扩充,添加新的输出目标以及路由规则也将一样非常简单。
上下文信息
NLog最具优势的特性之一就是它的布局(layout)概念。“${}”符号用来表示“布局呈现器(layout renderer)”,即随当前日志插入一段上下文信息。我们可以在很多地方使用布局,例如控制日志信息写入到屏幕以及文件中的格式,甚至还可以控制日志输出文件的名称。这个特性功能非常强大,接下来我们就来看看:
假设我们需要为输出到控制台的每一条信息添加如下附加信息:
- 当前的时间日期
- 发送该消息的类名和方法名
- 日志等级
- 日志内容
实现起来非常简单:
<target name="c" xsi:type="Console"
layout="${longdate} ${callsite} ${level} ${message}"/>
还可以让来自不同类的日志信息输出到不同的文件中:
<target name="f" xsi:type="File" fileName="${logger}.txt"/>
可以看到,上面我们在fileName属性中使用了${logger}布局呈现器。这样将让来自不同类的日志信息输出到以类名区分的不同文件中,即输出如下几个日志文件:
- Name.Space.Class1.txt
- Name.Space.Class2.txt
- Name.Space.Class3.txt
- Other.Name.Space.Class1.txt
- Other.Name.Space.Class2.txt
- Other.Name.Space.Class3.txt
- ...
一个非常常见的需求就是将每天的日志文件分开存放。使用${shortdate}布局呈现器,这个要求真是小菜一碟:
<target name="f" xsi:type="File" filename="${shortdate}.txt"/>
想要为每个员工生成不同的日志文件?${windows-identity}布局呈现器可以轻松搞定:
<target name="f" xsi:type="File" filename="${windows-identity:domain=false}.txt"/>
这样,NLog将根据每个员工的登陆信息将日志输出到单独的文件中:
- Administrator.txt
- MaryManager.txt
- EdwardEmployee.txt
- ...
当然还有更加复杂的情况。下面这个配置文件就为每个人每天生成一个单独的日志文件,并存放至用时间区分的目录中:
<target name="f" xsi:type="File"
filename="${shortdate}/${windows-identity:domain=false}.txt"/>
这条配置信息将生成类似如下的一些日志文件:
- 2006-01-01/Administrator.txt
- 2006-01-01/MaryManager.txt
- 2006-01-01/EdwardEmployee.txt
- 2006-01-02/Administrator.txt
- 2006-01-02/MaryManager.txt
- 2006-01-02/EdwardEmployee.txt
- ...
NLog提供了很多与定义的布局呈现器,在http://www.nlog-project.org/layoutrenderers.html 这个页面中有详细介绍。创建自己的布局呈现器也同样简单,依然是15-20行代码的事,请参考NLog的文档(documentation )。
包含文件
有时我们需要将NLog的配置文件分割成几个存放。NLog同样支持在某一配置文件中对其他的配置文件进行引用包含,然后在运行时一起处理。和NLog配置文件中其他部分一样,我们可以使用熟悉的${var}标记。这样就方便根据不同环境设置智能装载相应的配置文件,例如如下示例降加载基于计算机名的配置文件:
<nlog>
...
<include file="${basedir}/${machinename}.config"/>
...
</nlog>
使用变量则可以方便地处理复杂的表达式,或者以统一的方式引用多次重复出现的表达式。我们可以使用<variable name="var" value="xxx" />表达式定义一个变量,定义之后该变量即可在各种布局呈现器中使用——同样是${var}语法。例如下面的示例:
<nlog>
<variable name="logDirectory" value="${basedir}/logs/${shortdate}"/>
<targets>
<target name="file1" xsi:type="File" filename="${logDirectory}/file1.txt"/>
<target name="file2" xsi:type="File" filename="${logDirectory}/file2.txt"/>
</targets>
</nlog>
发表评论
-
美了哭了,AduSkin是我见过最好看的WPF控件库
2020-03-14 19:58 564原文地址:https://www.pianshen.com/ ... -
使用NSSM把.Net Core部署至 Windows 服务
2019-10-16 08:52 453转自:https://www.cnblogs.com/emr ... -
玩转ASP.NET Core中的日志组件
2019-01-06 16:11 650转自:https://www.cnblogs.com/ ... -
CentOS 7 部署 ASP.NET Core 应用程序
2019-01-04 13:56 456CentOS 7 部署 ASP.NET Core 应用程序 ... -
GeckoWebBrowser实现自定义打印
2018-12-22 00:26 739nsIWebBrowserPrint print ... -
Winform桌面程序如何使用Geckofx45
2018-12-05 14:50 2251NuGet管理GeckoFx PM> Inst ... -
NLog的介绍使用
2018-09-28 17:36 979NLog是什么 NLog是一个基于.NET平台编写的类库, ... -
常用的.net开源项目
2018-09-28 17:01 417常用 Json.NET:Json.Net ... -
高效实用的.NET开源项目
2018-09-28 16:58 4361.Akka.NET: 概述:更轻松地构建强大的并发 ... -
OCR框架整理
2017-08-16 09:29 520泰比ABBYY OCR SDK开发包 Asp ... -
使用Aspose.word导出word报告
2017-04-09 11:49 1533最近在做一个.net项目需要实现网站导出word报告功能,最 ... -
利用Aspose.Words 完美生成word试卷
2017-04-09 11:43 5082aspose.word生成word文档 public cl ... -
java使用wsimport生成服务代码时报错的解决办法
2017-01-18 11:27 1619今天遇到了WebService的问题:在使用jdk命令wsi ... -
OCR文字识别系统
2016-12-21 22:14 373慧视OCR文字识别系统 增值税专用发票扫描识别系统 ... -
asprise-ocr:验证码识别
2016-12-21 22:17 695asprise-ocr http://asprise ... -
jieba中文分词的.NET版本:jieba.NET
2015-09-10 09:36 749转自:http://www.cnblogs.com/ande ... -
通用身份验证类:AuthenticationCookie
2015-09-06 09:00 670/// <summary> /// C ... -
KwCombinatorics排列组合类库
2015-08-06 17:34 549KwCombinatorics类库的主页是:http: ... -
CefSharp嵌入式浏览器
2015-08-06 15:21 995日常开发中,我们需要将一些Web页面嵌入到桌面客户端软件中。 ... -
C#开源框架(整理)
2015-07-27 09:32 2292http://www.cnblogs.com/c ...
相关推荐
在本篇文章里小编给大家整理的是一篇关于Asp.Net Core用NLog记录日志操作方法以及相关知识点,需要的朋友们可以学习下。
文件文本控制台Email数据库网络中的其它计算机(通过TCP或UDP)基于MSMQ的消息队列Windows系统日志其他形式,请参考http://www.nlog-project.org/targets.html除此之外,每一条跟踪消息都可以自动带有上下文信息...
学习Logging 组件的相关使用,使用NLog 将日志写入到文件记录。 Logging 使用 新建一个 ASP.NET Core 项目,为了方便,我选择Web 应用程序,改身份验证 改为 不进行身份验证。 新建好以后,会自动引用好对应的 ...
NLog是一个简单灵活的.NET日志记录类库。通过使用NLog,我们可以在任何一种.NET语言中输出带有上下文的(contextual information)调试诊断信息,根据喜好配置其表现样式之后发送到一个或多个输出目标(target)中。...
如果您不想使用DI,则可以将添加到项目中,手动添加NLog.config文件,按照本进行操作GetCurrentClassLogger() ,然后将其用于日志记录。 要使用DI,可以按照下面的“入门”教程将NLog与Microsoft.Extensions....
本文介绍如何在使用NLog登录到Microsoft SQL Server的ASP.NET Core应用程序中设置日志记录。 NLog.Web.AspNetCore Nuget包已添加到csproj文件中的依赖项中。 < TargetFramework>...
流行的NLog日志记录工具的RabbitMQ目标 最低推荐配置 <? xml version = " 1.0 " encoding = " utf-8 " ?> < nlog xss=removed xss=removed> < target name = " RabbitMQTarget " xsi :
AddNLog()它提供扩展方法以使用或将 NLog 注册为 Microsoft 扩展日志记录的 LoggingProvider UseNLog()。 请注意,如果使用ASP.NET Core,则改为安装NLog.Web.AspNetCore。 NLog.Extensions.Logging还可以从 ...
asp.Net Core2.1使用灵活简单的日志记录框架NLog+SqlServer的示例代码!
NLog是一个简单灵活的.NET日志记录类库,NLog的API非常类似于log4net,且配置方式非常简单。通过使用NLog,我们可以在任何一种.NET语言中输出带有上下文的调试信息,根据项目需求配置署出格式和输出目标的规则。
NLog是一个免费的日志记录框架,专门为.net平台下的框架提供日志功能,下面这篇文章主要给大家介绍了关于ASP.NET Core与NLog集成的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
NLog是用于.NET的免费日志记录平台,具有丰富的日志路由和管理功能。 无论它的大小或复杂程度如何,都可以轻松为您的应用程序生成和管理高质量的日志。 它可以处理从任何.NET语言发出的诊断消息,使用上下文信息对...
.NET Core的Autofac NLog日志记录模块 用于NLog的Autofac日志记录模块。 移植到.NET Core的.NET Standard 2.0。 谢谢正在安装用Nuget安装Install-Package AutoFac.Extras.NLog.DotNetCore 或Dotnet CLI dotnet add ...
NLog是用于.NET的免费日志记录平台,具有丰富的日志路由和管理功能。 无论其大小或复杂程度如何,它都可以轻松为您的应用程序生成和管理高质量的日志。 它可以处理NLog是.NET的免费日志记录平台,具有丰富的日志路由...
Logging组件是微软实现的日志记录组件包括控制台(Console)、调试(Debug)、事件日志(EventLog)和TraceSource,但是没有实现最常用用的文件记录日志功能(可以用其他第三方的如NLog、Log4Net。之前写过NLog使用的文章)...
ASP.NET Core 有内置的log组件,遗憾的是看了微软官方文档,貌似无法直接将日志存于文件或数据库,只能由自己实现或引用第三方日志组件。 以下为Nlog和log4net的使用记录 Nlog使用 搜索添加Nuget包 Nlog Nlog.Web....
当然serilog也是一个不错的日志记录框架哟,不过今天主要还是要讲述的是NLog在项目中的配置和使用。 NLog框架源码:https://github.com/NLog/NLog 一、导入NLog NuGet PackAge: 二、配置NLog 配置文件: 注意:...
NLog是一个简单灵活的.NET日志记录类库,v4.7.11最新稳定版Demo
此类可以解决程序日志记录的大部分应用场景,包括窗体程序,web程序以及服务程序和控制台程序,你可以用它来进行api接口记录等操作,你还可以用它来进行调试传值。