【问题标题】:log4net config settingslog4net 配置设置
【发布时间】:2012-06-30 04:34:04
【问题描述】:

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

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

对于第一个问题和第二个问题有什么建议或代码sn-ps吗?

【问题讨论】:

    标签: log4net log4net-configuration


    【解决方案1】:

    对于 .Net 应用程序,只有“主”app.config 处于活动状态。您的库配置文件将被忽略。要么将设置转移到主配置文件,要么使用 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      • 2011-04-09
      • 2011-02-17
      • 2010-12-28
      相关资源
      最近更新 更多