编辑:虽然类似,但这与使用 NLog 包装器的问题不同。扩展方法添加了另一层间接性,即使是适当的包装器也会报告错误的调用点
我目前在 NLog 周围使用日志记录包装器,并且我使用他们在源代码中的示例中显示的技巧来获取准确的调用站点信息。对于我开始的一个新项目,我想创建一个更简单的类,所以我只是实现了类似以下接口的东西:
public interface ILogger
{
void Log( LogEntry entry );
}
然后我创建了一个扩展方法类,如:
public static class LoggerExtensions
{
public static void Debug( this ILogger logger, string format, params object[] args)
{
logger.Log( new LogEntry( LogLevel.Debug, format, args ) );
}
...
}
问题是 NLog 然后将调用站点显示为扩展方法,而不是扩展方法的调用者。我做了一些搜索,但找不到任何关于 NLog 和扩展方法的信息。
在这种情况下是否可以修复呼叫站点信息?或者是在接口本身中包含调试、信息等功能的唯一方法?