0

当有人写Microsoft.Extensions.Logging.ILogger.LogCritical()电话时,肯定发生了一些严重的事情。我希望它在调试器中运行时会(记录关键和)中断。我已经尝试了如何覆盖现有扩展方法的答案,它需要使用特殊的命名空间。不过我希望大家可以LogCritical()自然使用,不用再仔细检查是调用原创LogCritical()还是我被困的。

我能想到的唯一方法是用我的替换后备日志库,并使用我的中断逻辑将调用重定向到日志库。但是这个工具仅限于指定的库。如果将来我想更改库,我需要实现另一个库。并实现它需要的所有无聊的接口,只是为了一些LogCritical()相关的破坏逻辑。

所以,我希望捕捉到一般性的ILogger.LogCritical()呼吁,而不是潜在的具体呼吁。这可能吗?

4

1 回答 1

1

不确定你在找什么。但也许是这样的:

   var logFactory = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config");
   #if DEBUG
   var debugBreakTarget = new NLog.Targets.MethodCallTarget("DebugBreak", (logEvent,parms) => System.Diagnostics.Debugger.Break());
   var debugBreakRule = new NLog.Config.LoggingRule("*", NLog.Level.Fatal, debugBreakTarget);
   logFactory.Configuration.LoggingRules.Insert(0, debugBreakRule);
   logFactory.ReconfigExistingLoggers();
   #endif
   var logger = logFactory.GetCurrentClassLogger();

显示 NLog-specific-solution,因为您已将 NLog-tag 添加到您的问题中。

另见:https ://github.com/NLog/NLog/wiki/MethodCall-target

于 2019-09-09T17:41:42.383 回答