【发布时间】:2013-05-03 20:00:43
【问题描述】:
编辑:虽然类似,但这与使用 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 和扩展方法的信息。
在这种情况下是否可以修复呼叫站点信息?或者是在接口本身中包含Debug、Info等功能的唯一方法?
【问题讨论】:
-
正如我在问题中提到的,它与我已经在使用的包装器不同