我想将一个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是出于安全原因(在我的帮助下)由客户构建的,我永远不会改变。
对不起我的英文,谢谢你读我。
此致
答案 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);