我正在我们的应用程序中实现Log4net并进行日志记录我正在实现 AppenderSkeleton 。
由于log4net使用配置设置解析其appender,我无法将自定义服务指定为使用构造函数或属性注入的依赖项。
我之所以这样做是因为我希望我的appender能够使用MOQ框架进行单元测试。
以下是我想要实现的代码示例。
public class LoggingAppender : AppenderSkeleton
{
private ICustomService service;
public LoggingAppender(ICustomService service)
{
this.service = service;
}
protected override void Append(log4net.Core.LoggingEvent loggingEvent)
{
service.Method("Data From loggingEvent");
}
}
我还在stackoverflow找到了以下答案。但它不适合我的目的。
这个问题是否有任何解决方案,还是我们应该采用其他方法对其进行单元测试?
答案 0 :(得分:0)
@AshutoshSingh在这种情况下我建议在运行时添加appender。请参阅How to add log4net appender in runtime?(请注意,您可以注册appender,而不仅仅是那个)。
另外,您可以为ILogger添加工厂注册,这将在解析时添加appender,作为选项(参见Castle Windsor: How do I register a factory method, when the underlying type isn't accessible to my assembly?)。
在任何情况下,通过遵循该引用,您将获得一些可以使用的信息。
PS:没有足够的声誉在原帖中回复:-)所以会在这里发表回答: - )