C# 禁用来自特定程序集的调试消息
我有一个带有NLog的C#应用程序,用于记录日志,它还可以记录发送到System.Diagnostics的跟踪/调试系统的消息。这在应用程序的配置文件中完成,如下所示:C# 禁用来自特定程序集的调试消息,c#,logging,nlog,avalondock,C#,Logging,Nlog,Avalondock,我有一个带有NLog的C#应用程序,用于记录日志,它还可以记录发送到System.Diagnostics的跟踪/调试系统的消息。这在应用程序的配置文件中完成,如下所示: <system.diagnostics> <trace autoflush="true" indentsize="2"> <listeners> <add name="nLogListener" /> </listeners> <
<system.diagnostics>
<trace autoflush="true" indentsize="2">
<listeners>
<add name="nLogListener" />
</listeners>
</trace>
<sources>
<!--bunch of extra sources here-->
</sources>
<sharedListeners>
<add name="nLogListener" type="NLog.NLogTraceListener, NLog"/>
</sharedListeners>
</system.diagnostics>
我希望排除它们,同时仍保留发送到跟踪的所有其他消息。我可以向NLog添加一个过滤器,以使用通配符等排除所有这些过滤器,但我不希望这样做,因为:
- 这需要我找出阿瓦朗多克能说出的所有可能的信息
- 如果AvalonDock发生变化,我必须更新过滤器
- 也存在排除非AvalonDock消息的风险
是否有其他方法处理此问题(无需重新编译AvalonDock的源代码)?我能否以某种方式排除来自特定程序集的所有消息?或者可以在它们前面加上一个已知的字符串,这样我就可以根据单个字符串过滤消息了?中有一些有趣的注释。在类的“备注”部分有一些有趣的信息。@确实很有趣,但不幸的是,AvalonDock没有使用
TraceSource
s,而是使用普通的Debug.WriteLine
,所以我认为这些信息不适用于这个案子?
NLog.LoggerImpl.Write | Attach()
NLog.LoggerImpl.Write | DockingManager.OnPreviewGotKeyboardFocus(System.Windows.Controls.Canvas)
NLog.LoggerImpl.Write | SetFocusOnLastElement(focused=True, model=Xceed.Wpf.AvalonDock.Layout.LayoutAnchorable, element=System.Windows.Controls.Canvas)
NLog.LoggerImpl.Write | DockingManager.OnPreviewLostKeyboardFocus(System.Windows.Controls.Canvas)