应无所住,而生其心
排名
1
文章
860
粉丝
112
评论
163
net core webapi post传递参数
庸人 : 确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

nlog跳过微软的日志只显示我们自己的日志

8587人阅读 2022/1/7 22:00 总访问:5185695 评论:0 收藏:0 手机
分类: .NET Core


如果记录微软的日志会记录大量的日志信息,可能很多信息我们并不需要所以可以跳过,方法如下:

  1. <targets>
  2. <!--输出目标配置:配置Seq为输出类型-->
  3. <target name="seq" xsi:type="BufferingWrapper" bufferSize="1000" flushTimeout="2000"  >
  4. <target xsi:type="Seq" serverUrl="http://xx.yy.zz:8900" apiKey="apikey">
  5. <property name="ThreadId" value="${threadid}" as="number" />
  6. <property name="stacktrace" value="${onexception:inner=${stacktrace}}"/>
  7. <property name="Environment" value="Development" />
  8. <property name="IP" value="${aspnet-request-ip}" />
  9. </target>
  10. </target>
  11. <target xsi:type="Null" name="blackhole" />
  12. </targets>
  13. <rules>
  14. <!--跳过微软的日志只显示我们自己的日志-->
  15. <logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
  16. <logger name="*" level="Debug,Warn,Information,Trace,Error,Fatal" writeTo="seq" />
  17. </rules>

我们在需要跳过微软日志的上方加上一个配置,name="Microsoft.*"表示名字以Microsoft开头的就会匹配到这个规则。并且加一个final="true",表示这是匹配到的最后一个规则,这些信息到这一步匹配到就会终止,不会在往下面去匹配了。

  1. <logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />

由于我们的writeTo="blackhole",而blackhole又没有设置输出。所以下面的记录就会跳过微软的日志,不会记录上。

其实原理相当于就是我们写了一个通配符把微软的信息单独写了一个规则,我们匹配到了但是又没有记录下来。他后面的就不会记录微软的日志了
当然它上面的还是会记录,如果写的是name="*",因为它上面的都会匹配到。

其实如果不想记录微软的日志上面的target都可以不要,我们直接在logger上面不写writeTo就行:

  1. <logger name="Microsoft.*" minlevel="Trace" final="true" />
  2. <logger name="*" level="Debug,Warn,Information,Trace,Error,Fatal" writeTo="seq" />

相当于就是加个final="true"就是分流,把微软输出的日志分流在这个规则里边,后面的就匹配不到了


当然我们如果只是不想把微软的日志记录到我们的核心日志查看的地方比如日志中心,我们还是可以把日志的日志单独记录到不重要的地方,比如单独写一个文件什么的,想到的时候也随时可以看,所以我们只记录微软报错信息这些重要的信息到日志中心。其他比如调试,info这些就记录到普通的文件里边即可。

比如我们只记录微软报错信息这些重要的信息到日志中心,可以这样配置
上面跳过微软error以下的日志即可,其他还是记录起,只需要上面的匹配最高等级是error一下的日志即可。这样一来error和error以上的还是可以在下面被匹配到,
被记录下来。

  1. <logger name="Microsoft.*" maxlevel="Warning" final="true" />
  2. <logger name="*" levels="Debug,Warn,Information,Trace,Error,Fatal" writeTo="seq" />


路由规则

<rules />区域定义了日志的路由规则。实际上它是一个简单的路由表,对每一个日志源/记录者的名称和记录等级的组合,定义了一个日志写入目标列表。 表中的规则是被顺序处理的。每当遇到匹配的规则时,日志信息就会被送到规则中定义的一个或多个目标去。如果一个规则被标识为最后一个,那么其后的规则都不会被执行。

每一个路由表项就是一个<logger />元素,它的可以接受的属性有:

name - 日志源/记录者的名字 (允许使用通配符*)

minlevel - 该规则所匹配日志范围的最低级别

maxlevel - 该规则所匹配日志范围的最高级别

level - 该规则所匹配的单一日志级别

levels - 该规则所匹配的一系列日志级别,由逗号分隔。

writeTo - 规则匹配时日志应该被写入的一系列目标,由逗号分隔。

final - 标记当前规则为最后一个规则。其后的规则即时匹配也不会被运行。

小例子:

<logger name="AJ.Space.Class1" minlevel="Debug" writeTo="f1" /> - 名字空间AJ.Space下的Class1这个类的所有级别等于或者高于Debug的日志信息都写入到“f1”这个目标里。

<logger name="AJ.Space.Class1" levels="Debug,Error" writeTo="f1" /> -名字空间AJ.Space下的Class1这个类的所有级别等于Debug或Error的日志信息都写入到“f1”这个目标里。

<logger name="AJ.Space.*" writeTo="f3,f4" /> -名字空间AJ.Space下所有类的所有级别的日志信息都写入到“f3”和“f4”这两个目标里。

<logger name="AJ.Space.*" minlevel="Debug" maxlevel="Error" final="true" /> - 名字空间AJ.Space下所有类的、级别在Debug和Error之间的(包括Debug,Info,Warn,Error) 日志信息都不会被记录(因为这条规则没有定义writeTo),同时其它后续规则也都会被忽略(因为这里设置了final="true")。


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

Net Core使用日志 nlog

一:使用Nuget执行命令下载NLog相关依赖 Install-Package NLog.Extensions.Logging -Pre Install-Package NLo...

.net core3.1使用nlog缺少trace与debug

检查你的appsettings.json配置文件 关于日志等级的设置: { &quot;Logging&quot;: { &quot;LogLevel&quot;: { ...

.net core3.x使用nlog

下载依赖:&lt;ItemGroup&gt; &lt;PackageReferenceInclude=&quot;Nlog&quot;Version=&quot;4.7.13&quot;/&gt; &lt;Packa...

nlog日志等级

NLog允许的日志级别由高到低依次是:FatalErrorWarnInfoDebugTraceOff 最低日志等级设置: &lt;logger name=&quot;*&quot...

nlog 规则rules

路由规则区域定义了日志的路由规则。实际上它是一个简单的路由表,对每一个日志源/记录者的名称和记录等级的组合,定义了一...

nlog扩展官方文档

https://nlog-project.org/2015/06/30/extending-nlog-is-easy.html

扩展nlog获取我们想要的内容,比如获取代理过后的ip地址

一:自定义一个NLOG模板用来获取经过nginx转发后的ip地址自定义一个类继承AspNetLayoutRendererBase:usingNLog; usingNLo...

nlog 设置全局变量

前言在使用nlog 记录日志时,需要在配置文件传递许多通用的参数,比如人员信息,IP,端口等等这些常用且通用的参数,但是又...

Serilog 日志简用

Serilog是一个用于.NET应用程序的日志记录开源库,配置简单,接口干净,并可运行在最新的.NET平台上,与其他日志库不同, Se...

Python实例 1-日志抓取处理 补错(附日志小技巧)

有时候数据出了问题,可以从日志中恢复数据(如果你没记日志..没备份..→_→..)一、日志展示介绍个平常自己用的小方法,如...

net core配置错误日志

发布net core项目的时候经常会遇到错误,在页面上也不好直接看到。可能就提示一句话:An error occurred while starting th...

日志是写数据库好还是文件好,以及日志策略

先来看看大佬的一句话:离开需求谈技术都是扯淡主要是看你的日志是为了只做一个存储归档,还是要把数据对统计与分析如果只...

封装调用api接口的通用方法(抱含存调用接口日志)

protectedstaticreadonlylog4net.ILog_log=log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod(...

Serilog日志记录到Sqlserver以及其中存在的问题

1.首先来一大串的安装Install-PackageSerilog //控制台输出 Install-PackageSerilog.Sinks.Console //文件输出 Install...

日志文件写入

//新建一个类 publicstaticvoidWrite(stringconter,stringtype,stringremark) { stringname=DateTime.Now.ToShortDateSt...