Log4net 和 Unity 注册

标签 log4net unity-container

我正在尝试将 Unity 配置为将 ILog 注入(inject)到我的类中,其中 LogManager.CreateLogger() 中的类型/名称设置为注入(inject) ILog 的类。

这是 similar question , 但对于结构图

最佳答案

我知道这个答案很晚,但我最近遇到了这个问题。

现在有一个 NuGet 包,UnityLog4NetExtension ,注册 log4net.ILog界面和一些 Unity 构建策略,允许您只注入(inject) ILog接口(interface)并让 Unity 使用它被注入(inject)的类来创建它。

该代码也可通过 GitHub 获得.

例如:

在需要注入(inject) ILog 实例之前,将扩展添加到统一容器。我已经在 Bootstrap 中完成了这个。

//add the extension to the unity container 
container.AddNewExtension<Log4NetExtension>();

然后,只需注入(inject) ILog界面,它将工作

public class MyClass
{ 
    private readonly ILog _logger;

    public MyClass(ILog loggerForMyClass)
    {
        _logger = loggerForMyClass;
    }
}

这段代码就像我写了 _logger = LogManager.GetLogger(typeof(MyClass)) 一样工作。

关于Log4net 和 Unity 注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6096376/

相关文章:

xml - 在 Log4Net XML 配置中,优先级是否与级别相同?

c# - 统一配置约定

c# - 构造函数中的Func <T>参数是否会减慢我的IoC解析速度?

exception - log4net过滤异常消息?

c# - 运行 WPF 应用程序的可执行文件时 log4net 不工作

c# - 仅从指定的命名空间解决依赖关系

c# - 如何使用Unity进行依赖注入(inject)(简单示例)

wpf - 在 WPF CAL MVVM 中初始化模型和 View 的正确方法是什么

.net - 与 NLog 配合使用的不错的日志查看器

c# - log4net错误呈现