如何在调试器中捕获 ILogger.LogCritical 调用和中断?
How to trap ILogger.LogCritical call and break in debugger?
当有人写 Microsoft.Extensions.Logging.ILogger.LogCritical()
电话时,一定发生了一些严重的事情。我希望它会在调试器中 运行 时(记录关键和)中断。我试过 How to override an existing extension method 的答案,它需要使用特殊的命名空间。但是我希望大家能自然的使用LogCritical()
,不用再去纠结是调用原来的LogCritical()
还是我的坑
我能想到的唯一方法是用我的替换后备日志记录库,并使用我的中断逻辑将调用重定向到日志记录库。但是这个工具仅限于指定的库。如果我以后想换库,我需要再实现一个。并实现它需要的所有无聊接口,只是为了一些LogCritical()
相关的破坏逻辑。
所以,我希望捕获一般的 ILogger.LogCritical()
调用,而不是底层的具体调用。这可能吗?
不确定您要找什么。但也许是这样的:
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 特定解决方案,因为您已将 NLog 标签添加到问题中。
当有人写 Microsoft.Extensions.Logging.ILogger.LogCritical()
电话时,一定发生了一些严重的事情。我希望它会在调试器中 运行 时(记录关键和)中断。我试过 How to override an existing extension method 的答案,它需要使用特殊的命名空间。但是我希望大家能自然的使用LogCritical()
,不用再去纠结是调用原来的LogCritical()
还是我的坑
我能想到的唯一方法是用我的替换后备日志记录库,并使用我的中断逻辑将调用重定向到日志记录库。但是这个工具仅限于指定的库。如果我以后想换库,我需要再实现一个。并实现它需要的所有无聊接口,只是为了一些LogCritical()
相关的破坏逻辑。
所以,我希望捕获一般的 ILogger.LogCritical()
调用,而不是底层的具体调用。这可能吗?
不确定您要找什么。但也许是这样的:
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 特定解决方案,因为您已将 NLog 标签添加到问题中。