【问题标题】:Class project is not loading log4net.config from Main project类项目未从主项目加载 log4net.config
【发布时间】:2009-08-30 11:15:56
【问题描述】:

我的 log4net Wrapper 和 log4net dll 在它自己的类项目中,我已将以下内容添加到类项目的 assemblyinfo.cs 中

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

所以我的主项目有 log4net.config 文件,并且日志记录在我的主项目中工作。

我还有另一个类项目(与 log4net 无关),我的主项目(日志正在工作)调用该类项目。所以我进入了新的类项目,需要记录一些东西,但 IsDebugEnabled 返回 false .. 这是行

      LogManager.GetLogger("DebugLogger").IsDebugEnabled;

所以引用我的 LOGGING 类的主项目 (webproject) 返回 TRUE,但我从主项目调用的类项目返回 false。

课程项目似乎没有读取 log4net

有什么想法吗?

【问题讨论】:

    标签: c# log4net


    【解决方案1】:

    您的 Log4Net.config 文件是否在构建时被复制到目录中?您要确保 Log4Net.config 在属性中始终复制。

    我还会重新考虑将它放在单独的文件中。我更喜欢一个配置文件而不是几个。如您所见,很难处理不同的配置文件。

    【讨论】:

    • 是的,我自成立以来它不是 log4net 的问题。我正在使用带有类包装器的 ThreadContext ..所以我的代码是登录它出现但它是相同的线程上下文 - 如果这使得任何意义......因此我需要调查
    【解决方案2】:

    如果我按照正确,你的设置是这样的:

    Web 项目(web.config 和 log4net.config)

    • 参考日志包装器
    • 参考类库项目

    日志包装器

    • 参考 log4net
    • 包含程序集:XmlConfigAttribute

    类库项目

    • 参考 log4net

    虽然您没有在 log4net“包装器”类上发布任何详细信息,但我假设您的 Web 项目不是直接访问 log4net,而是通过您的包装器。

    根据my last answer,log4net 正在解析配置并在您的包装器项目中构建日志存储库。虽然我相当肯定有only one repository per AppDomain,但听起来您的类库项目没有找到默认存储库。由于它在 AppDomain 级别,我怀疑它是您的包装程序集所独有的。

    相反,这听起来像是一个时间问题。如果你先调用包装器然后调用类库会发生什么?我怀疑你会发现如果你先调用你的类库项目,你不会得到一个记录器。但是,如果第一个记录调用是对您的包装器的,那么任何后续对记录器的请求都应该有效。这是因为包装器项目包含配置设置信息,并且第一次调用将为 AppDomain 配置日志存储库。

    虽然我不是包装 log4net 的忠实拥护者,但您可以通过在应用程序启动逻辑中强制调用包装器或让您的类库项目使用包装器来解决此问题。请记住,如果您使用包装器概念,您的类库将无法利用所有 log4net 内置功能(如 IsDebugEnabled),您必须通过包装器解决这些设置。

    【讨论】:

    • 谢谢布赖恩,是的,我发现您的其他答案非常有帮助.. 我正在使用带有类包装器的 ThreadContext .. 所以我的代码是登录它出现但它是相同的线程上下文 - 如果这有任何意义...因此我需要调查
    • 我同意这个答案。关于 AssemblyInfo 中的 log4net 配置,Log4Net 似乎在您的代码使用 GetRepository() 的第一个程序集中查找 AssemblyInfo 配置(可能与 GetLogger() 相同)。
    猜你喜欢
    • 2022-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多