log4net配置设置

时间:2012-06-30 04:34:04

标签: log4net log4net-configuration

我正在开发一个核心dll,我有一个类库。我想使用log4net来启用异常日志记录。我在类库中有一个app.config文件,我已经给出了log4net的设置。但是当我测试类库时,log4net不会创建日志,直到我在调用项目中添加app.config,尽管事实如此我已经在类libary的assemblyinfo.cs中添加了[assembly:log4net.Config.XmlConfigurator(Watch = true)]并且我正在使用log4net.ILog logger = log4net.LogManager.GetLogger(typeof(ErrorHandler))其中ErrorHandler是名称我的类库的类处理log4net的调用函数。关于出了什么问题的任何想法?

其次,我想要实现的是我的dll的用户只会传递他们想要创建日志的位置,以及他们是否想要在他们的app.config中创建事件查看器或日志文件中的日志?他们不会处理log4net的任何其他设置。

第一期和第二期的任何建议或代码段?

1 个答案:

答案 0 :(得分:1)

只有“main”app.config对.Net应用程序有效。您的库配置文件将被忽略。您可以将设置传输到主配置文件,也可以将外部配置文件用于log4net。你配置它然后就像这样(假设你称之为log4net.config):

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

请注意,配置文件的结构略有不同:

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
    <appender name="YourAppender" type="..." >
      ....
    </appender>
    <root>
        <level value="ALL" />
        <appender-ref ref="YourAppender" />
    </root>
</log4net>

至于你的第二个问题:我不确定这有多么灵活。它只是从文件追加器切换到事件日志追加器?根据您的答案,您可以考虑两个准备配置文件(例如file.log4net和eventlog.log4net)并根据需要读取配置(在这种情况下,您不能使用该属性:您直接调用Configure()方法)或如果您的要求更复杂,您甚至可能最终配置log4net programatically