忽略其他程序集中引用的NLog配置
本文关键字:引用 NLog 配置 集中 程序集 其他 程序 | 更新日期: 2023-09-27 18:05:33
我有一个独特的问题与NLog。我有一个第三方程序集,我们使用到我们的项目。他们在他们的项目中使用了NLog,并将NLog配置引用到他们的配置中,我没有访问权限。最初,我甚至在将NLog添加到项目中都遇到了问题,因为两个版本的dll都不同。我不得不下载NLog的源代码并更改程序集名称,因为别名不适合我(或者我不知道如何使用它)。在给我自己的汇编名称后,NLog开始工作,但是…它也开始记录第三方日志信息。看起来他们在定义记录器时不够小心,他们只是定义了(*)。现在我的问题是,我如何避免他们的东西登录到我的文件?我也试过将其设置为final = true。下面是我的简单配置文件。
<?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">
<!--
See https://github.com/nlog/nlog/wiki/Configuration-file
for information on customizing logging rules and outputs.
-->
<targets>
<!-- add your targets here -->
<!--
<target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}" />
-->
<target name="errorLog" xsi:type="File"
fileName="${basedir}/logs/error/${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}${onexception:${newline}EXCEPTION': ${exception:format=ToString}}"
/>
<target name="generalLog" xsi:type="File"
fileName="C:/logs/${date:format=yyyy-MM-dd}.log"
layout="${longdate} ${uppercase:${level}} ${message}"/>
</targets>
<rules>
<!-- add your logging rules here -->
<logger name="Errors" writeTo="errorLog" minlevel="Warn"/>
<logger name="EBusiness.Model.*" writeTo="generalLog" levels="Trace,Debug,Info" final="true"/>
<!--
<logger name="*" minlevel="Trace" writeTo="f" />
-->
</rules>
</nlog>
如果它们写入到根记录器,你应该配置根记录器不记录到任何你关心的地方(可能指向控制台记录器),你的应用程序可以记录到一个特定的记录器,它写到你的文件。
很丑,但应该能工作。
例如:添加这个目标:
<target name="console" xsi:type="Console" />
并将*
规则改为:
<logger name="*" minlevel="Fatal " writeTo="console" />
然后,添加您自己的记录器规则,如:
<logger name="MyNameSpace.*" minlevel="Trace" writeTo="logfile" final="true" />
假设您已经定义了指向文件的logfile
目标