【发布时间】: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