【问题标题】:Now Log4Net.config isn't being loaded as I moved my wrapper class to its own class project现在 Log4Net.config 没有被加载,因为我将包装类移动到它自己的类项目中
【发布时间】:2010-11-23 18:18:16
【问题描述】:

谁能帮忙,我一直在成功使用 log4net 我基本上在我的 web 项目中有一个静态类(包装器),我通过在 assemblyinfo.cs 中添加这个名为 log4net.config 的外部文件加载我的配置

    // log4net config file
    [assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]

很好!现在我决定将我的静态类移动到它自己的类项目中,这样我就可以与其他项目共享我的静态类(包装器)。

log4net.config 仍在 web 项目中,但当然它现在没有被加载,我可以告诉这一点,因为在我的静态类(现在它自己的项目)中我正在做

          return LogManager.GetLogger("InfoLogger").IsInfoEnabled;

并且 IsInfoEnabled 返回 false,并且没有记录任何内容,没有读取 .config 文件...

记住 Log4net 包装器(静态类)在它自己的类项目中,但 .config 文件在我拥有的 web 项目中。我需要这样,因为 .config 可以逐个项目地更改,但通常是包装器不会。

当然,我想我会创建一个抽象类,然后在我的 web 项目中继承并在需要时覆盖任何东西......但是当然你不能继承静态类,甚至不能制作抽象类......

我相信其他人已经遇到过这个问题,有什么想法吗? .. 任何帮助都非常感谢

【问题讨论】:

  • 为什么不去掉wrapper类,把一行配置放在每个项目里,直接用Log4Net呢?当然,你有一个依赖——但它主要是在 ILog 接口上。您可以使用依赖注入摆脱这种情况,但您仍然会受到静态类包装器的阻碍。

标签: c# .net class log4net assemblyinfo


【解决方案1】:

您需要将XmlConfigurator 程序集属性放在包装log4net 的类库中。您可以将 log4net.config 文件保存在 Web 应用程序的根目录中。

第一次初始化 log4net 时会读取 XmlConfigurator 程序集属性。 Log4net 扫描调用程序集以查找属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-28
    • 2023-03-09
    • 2017-03-24
    • 2011-08-20
    • 2011-07-23
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多