在主配置文件之外的另一个文件中设置Log4Net appender

时间:2011-10-28 12:25:42

标签: log4net

我想将一个appender部分放在另一个文件中,而不是我的主log4net配置文件。

目标是允许我使用log4net.config发布我的应用程序,但不删除某些客户特定信息,如smtp参数。

这个想法是:

  <logger name="DatabaseLogger">    
    <level value="ALL" />
    <appender-ref ref="AdoNetAppender" />
    <appender-ref ref="SmtpAppender" />
  </logger>

 <appender configSource="log4netsmtp.config"/>

log4netsmtp.config是出于安全原因(在我的帮助下)由客户构建的,我永远不会改变。

对不起我的英文,谢谢你读我。

此致

1 个答案:

答案 0 :(得分:1)

您可以通过Assembly的GetManifestResourceStream加载它来获取文件并将其视为xml,然后初始化您的logger,您可以使用log4net.config.XmlConfigurator类并将XmlElement实例传递给它或将XmlElement附加到现有文件中log4net xml配置:

Assembly a = Assembly.GetAssembly(this.GetType());
Stream stream = a.GetManifestResourceStream("MyAssembly.ConfigFolder.logger.config");
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(stream);
// eventually append, modify, merge, check the xml with other info
XmlConfigurator.Configure(xmlDoc);