nlog 规则rules 电脑版发表于:2022/1/7 22:13 ###路由规则 <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")。 忽略微软的日志: ``` <logger name="Microsoft.*" minlevel="Trace" final="true" /> <logger name="*" level="Debug,Warn,Information,Trace,Error,Fatal" writeTo="seq" /> ``` 加个final="true"分流即可