新建一个文件命名为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/ Error" writeTo="asyncFile" /> <logger name="*" minlevel="Debug" writeTo="console" /> </rules> </nlog
NLog 是我们在 .NET 领域使用非常广泛的日志组件。它默认使用 xml 来维护它的配置。最近有几个同学问我当使用 AgileConfig 的时候如何配置 NLog 。 以下介绍下 NLog 如何跟 AgileConfig 进行集成,以及支持动态化的配置。 使用 AgileConfig 配置 NLog NLog 默认的配置是通过 xml 来配置的。 新建应用 Nlog_test 在 AgileConfig 控制台新建一个应用 Nlog_test 。 维护 Nlog 配置 把以下 json 配置维护到 Nlog_test 应用下。 Nlog 的配置。 ; 通过以上配置,当我们在 AgileConfig 修改 Nlog 配置规则的时候,只要点击发布,应用的 Nlog 配置就会实时更改。
只需下载(下载地址)安装包,安装之后NLog就会在VS的新建项中增加很多选项,并且在编辑NLog配置文件时也会提供智能提示和校验。 NLog工作主要依赖的是两个文件一个是NLog.dll,另外一个是NLog.config,解下来演示下如何引入和进行配置 1.在你的项目中加入NLog。 在非Asp.net项目中,记得把NLog.config文件复制到输出目录(右击NLog.config文件属性)。 ? 2.编辑配置文件NLog.config. 关于配置文件如何编辑有大量的篇幅(https://github.com/nlog/nlog/wiki/Configuration-file),我们这里介绍两种常用的场景。 > <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001
因此一款好的日志组件将至关重要,在.NET 的开源生态中,目前主要有Serilog、Log4Net和NLog三款优秀的日志组件,但相较而言,NLog功能更加强大且扩展性强,允许开发者在仅修改配置文件的方式来丰富日志输出内容 安装NLog 日志组件:进入项目内部,控制台执行dotnet add package NLog.Web.AspNetCore添加NLog.Web.AspNetCoreNuGet 包。 添加NLog 配置文件:官方提供两种方式用来添加配置,一种是添加nlog.config文件使用xml格式进行配置,一种是直接在appsettings.json文件中使用json格式进行配置,这里推荐使用 ` 节点读取配置 var nlogConfig = builder.Configuration.GetSection("NLog"); NLog.LogManager.Configuration = new ,在配置NLog时,要在NLog节点下加入extensions配置。
第三方有Log4Net、NLog、Serilog等。 2、NuGet安装:NLog.Extensions.Logging(using NLog.Extensions.Logging; )。 项目根目录下建nlog.config,注意文件名的大小写(考虑linux)。也可以是其他文件名,但是需要单独配置。约定大于配置。 nlog.config: <? -- XSD manual extracted from package NLog.Schema: https://www.nuget.org/packages/NLog.Schema--> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xsi:schemaLocation="NLog NLog.xsd" xmlns: target --> <rules> <logger name="*" minlevel="Trace" writeTo="logfile,logconsole" /> </rules> </nlog
以前小编记录日志使用的是Log4Net,虽然好用但和NLog比起来稍显复杂。下面小编就和大伙分享一下NLog的使用方式。 引用NLog.Config 在使用NLog之前,我们要首先添加对NLog.Config的引用,这里小编使用NuGet来添加引用,在安装NLog.Config时会同时安装NLog.Schema和NLog包 我们在添加NLog.Config包后,项目中会自动添加一个名为NLog.config的文件,针对NLog的配置就写在该文件中。 1 <targets> 2 <! NLog中滚动日志的配置如下: 1 <target name="logfile" xsi:type="File" 2 <! 这里小编仅仅总结了使用NLog记录日志的简单用法,至于NLog的更多使用方式有兴趣的读者可以查看NLog官网的相关文档。
NLog日志管理工具 一、获得NLog 这里介绍最简单的获得方式 1.管理NuGet程序包 2.在打开页面中搜索NLog并进行安装,安装NLog和NLog.Config 3.安装成功后我们可以看到如图中的文件及引用 二、配置NLog.config <? > <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" 控制台和VS就不截图了 如此就可以使用NLog的简单的输出日志了,更深入的内容有待学习。
本文自定义一个NLog Layout Renderer(显示HttpClient请求的耗时) 什么是Layout Renderer? nlog日志上输出的特定字段,便于检索和分类。 # 截取自nlog.config配置文件 <target name="bce-request" xsi:type="File" layout="${date:format=yy/MM request http://localhost:5000/v1/eqid/1a41e8d600151edc000000028decf3bf after 36.8624ms end -OK 头脑风暴 <em>nlog</em> 所有的日志Render依赖日志写入时的信息, 因此我们在写入日志时附带该Renderer值, 然后配置<em>nlog</em>显示日志时提取该Renderer值。 3 按照文档的要求,尽早注册自定义<em>Nlog</em> Layout Renderer: public static void Main(string[] args){ LayoutRenderer.Register
> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001 接下来,我们要在Program.cs文件中配置使用Nlog,这个方法是用Nlog替代ASP.NetCore 自带的日志系统,也可以在Startup.cs中配置Nlog日志服务,两个方法都可以,先讲一下前者 : 在Main方法的生成主机方法之前加入: //配置Nlog NLogBuilder.ConfigureNLog("Nlog.config"); 这一步是加载配置文件,然后在CreateHostBuilder ,注册Nlog日志服务,首先在appsetting.json中添加如下配置: "NLog": { "autoReload": true, "throwConfigExceptions": "extensions": { "NLog.Extensions.Logging": { "assembly": "NLog.Extensions.Logging"
NLog框架源码:https://github.com/NLog/NLog 一、导入NLog NuGet PackAge: ? ? 二、配置NLog 配置文件: 注意:在这里我是专门新建了一个NLog.config 配置文件用来进行独立配置,当然你也可以在web.config中完成相应的配置!! NLog详细配置文件信息,请查看官网说明:https://github.com/nlog/nlog/wiki/configuration-file 可参考晓晨大佬的NLog配置:https://www.cnblogs.com > <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/ 三、NLog使用: 在这里,我封装了一个NLog使用帮助类,提供给全站调用,这样就可以避免在不同的类中实例化Nlog对象的步骤。
//最长单调子序列 复杂度nlog(n) //参数(原序列,序列长度,生成的序列),传入序列长度必须大于0 //返回值中lengthRecord中前k项表示长度为k的最小字序列 //LIScmp为关系函数 lR[b] = list[i]; if(b >= length) length ++; } /* *计算序列部分 *复杂度nlog
这篇文章简单介绍了如何使用.NET(Core)和Kafka实现NLog的Target。 二、开源 通过实现NLog的Target,接入kafka将日志传输到Logstash的组件。 https://github.com/maxzhang1985/NLog.Kafka 三、使用 建立项目 NLog.Kafka组件支持.NET 4.5+和 NETStandard1.6+ ,所在可以在传统 项目引用 NLog 4.5.8 NLog.Kafka librdkafka.redist 引用librdkafka.redist是因为使用了依赖库Confluent.Kafka 0.11.5,Confluent.Kafka --nlog 基础配置 第二行throwExceptions开始 上线后关闭--> <nlog autoReload="true" xmlns="http://www.nlog-project.org
因为没有Log4支持的Nuget包,后续转到Nlog。 ABP很多文档说转换日志管理很简单,很多博客都是一笔带过,知其然不知其所以然,我看到这些博客心里早已是万马奔腾,mmp,最后在github找到一个开源的abp的nlog包Abp.Castle.NLog, 另外还需要安装另外两个包NLog.Web.AspNetCore,NLog.Extensions.Logging,如果你不安装,在nlog.config中的一些参数你将不可用。 .net core 配置nlog ? nlog配置文件: <?xml version="1.0" encoding="utf-8" ? > <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/
Logstash提供了多种监听日志打印的方式,而Nlog也提供了多种输出日志的方式,当Nlog的输出配置与Logstash的输入配置相对应,就能够让Nlog打印出来的日志都存储到Elasticsearch file { path => "D:/Log/Application/*Log.txt" type => "Application" } } Nlog tcp Logstash: input{ tcp{ port => 8001 type => "TcpLog" } } Nlog udp Logstash: input{ udp{ port => 8002 type => "UdpLog" } } Nlog
项目中使用NLog记录日志,很好用,之前一直放在文本文件中,准备放到db中,方便查询。 项目使用了Mysql,所以日志也放到Mysql上,安装NLog不用说,接着你需要安装Mysql.Data安装包: Install-Package MySql.Data 接着打开你的NLog,新增一个target text DEFAULT NULL, PRIMARY KEY (`Id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; 然后修改下NLog /NLog/wiki/Layout-Renderers),你也可以自定义layout。 NLog.Web 再次运行,你会看到你的日志中已经记录的很全面了。
但是NLog的官方例子里只有一份nlog.config,如何根据不同环境加载不同配置呢? 怎么会有这种想法 首先,这个需求的背景,依然来源于我自己的博客系统(https://edi.wang)。 因此对于生产环境,我需要更改NLog的日志文件路径。 因此为了解决这个问题,我们需要一个能判断当前环境,并使用不同NLog配置文件的方法。 新建环境配置文件 首先,复制出一个用于开发环境的配置文件,如:nlog.debug.config,这种命名的好处在于,VS会自动将它nest到nlog.config下。 ? "nlog.config" : "nlog.debug.config").GetCurrentClassLogger(); } 现在,网站在Azure上能够将日志写入专用文件夹: ?
上文我们演示了使用NLog向ElasticSearch写日志的基本过程(输出的是普通文本日志),今天我们来看下如何向ES输出结构化日志、在Kibana中分析日志。 什么是结构化日志? ---- 下面来完整输出、分析提交订单请求的日志: 利用NLog向ES输出结构化日志 NLog4.5引入结构化日志,支持Message Template, 在ASP.NET Core脚手架Startup 再谈到我是如何利用NLog输出结构化日志,其中注意在NLog Target中设置includeAllProperties=true(默认是false), 摸索了很久 最后在Kibana中演示便捷的分析结构化日志 干货周边也很重要 [消息模板] https://messagetemplates.org/ [如何利用NLog输出结构化日志] https://github.com/nlog/nlog/wiki /How-to-use-structured-logging [NLog to ES] https://github.com/markmcdowell/NLog.Targets.ElasticSearch
添加 NLog、NLog.Web.AspNetCore、NLog.Mongo。 Install-Package NLog Install-Package NLog.Web.AspNetCore Install-Package NLog.Mongo ? NLog 和 NLog.Web.AspNetCore 为 ASP.NET Core 添加了对于 NLog 的平台支持,在 NLog 中,我们可以通过继承 NLog.Targets.TargetWithLayout 来为 NLog 添加更多的输出介质支持,而 NLog.Mongo 就是为 NLog 添加输出日志信息到 MongoDB 的支持。 --internal-nlog:NLog启动及加载config信息--> <!
但是, 如果我们的DI用于多租户模式,像这样的NLog没法做到完全隔离. 例如下面的这个例子: //user1_services 的nlog配置会被user2_services的nlog配置覆盖, 我们就没法实现多租户(user1, user2)的完全隔离了. (new NLogLoggingConfiguration(configuration.GetSection("active_user_nlog_options"))); // nlog的配置选项, targets (...)); 需要注意的是还有一个feature要注意使用方式, 文档参考:https://github.com/NLog/NLog/wiki/ConfigSetting-Layout-Renderer 因为这货也是一个静态变量在维护, 可以通过NLog.LayoutRenderers.LayoutRenderer.Register("configsetting","NLog.Extensions.Logging.ConfigSettingLayoutRenderer
NLog者,开天眼通九幽,照见五蕴皆空”,NLog与Serilog、log4net并称.NET修仙界三大日志法器。今天我们就来聊一聊这.NET修仙界三大日志法器之一的NLog。 第一章:基础修炼 1.1 安装NLog NuGet包 NLog NuGet包安装流程图 NLog组件安装指南: 组件名称 命令 适用场景 NLog dotnet add package NLog 所有. NET项目 NLog.Web.AspNetCore dotnet add package NLog.Web.AspNetCore ASP.NET Core项目 NLog.Database dotnet -- NLog.config 核心结构 --> <nlog> <targets> <! 愿诸位道友在.NET大道上,以NLog为伴,早登技术巅峰!