我需要在配置部分使用除 log4net 之外的部分名称。我知道这是我们通常使用的
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
但我需要有一个这样的部分
<section name="log2net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
我正在开发一个 sitecore 网站,它有自己的 Sitecore.Logging dll,它也源自 log4net。所以 Sitecore Logging dll 指的是 web.config 中的 log4net 部分
我们的自定义 log4net 附加程序仅适用于 log4net,不适用于 sitecore.logging dll。所以我想我的项目中可以有两个记录器,sitecore.logger 和 log4net 记录器。 Sitecore.logger 使用 log4net 部分,因此我希望 log4net 使用不同的部分 anme,例如 log2net
我尝试通过在配置中包含 log2net 部分来使用下面的代码。
但我收到错误 log4net:ERROR XmlHierarchyConfigurator: Xml element is - not a log4net element。
XmlElement element = (XmlElement)ConfigurationManager.GetSection("log2net");
log4net.Config.XmlConfigurator.Configure(element);
任何人都可以帮忙吗?
我无法重现您遇到的异常,但查看其详细信息和code of XmlHierarchyConfigurator class http://log4net.sourcearchive.com/documentation/1.2.10plus-pdfsg/XmlHierarchyConfigurator_8cs-source.html,当根xml元素名称不是时抛出异常log4net
这正是你想要做的。
您可以尝试做的是:
- 阅读您的定制
log2net
XmlElement
- 创建一个新的
log4net
XmlElement
- 复制你的所有孩子
log2net
到新的log4net
element
- Execute
XmlConfigurator.Configure()
方法传递你的新log4net
元素。
XmlElement element = (XmlElement)ConfigurationManager.GetSection("log2net");
XmlElement newLog4net = element.OwnerDocument.CreateElement("log4net");
for (int i = 0; i < element.ChildNodes.Count; i++)
{
XmlNode child = element.ChildNodes[i];
newLog4net.AppendChild(child.CloneNode(true));
}
log4net.Config.XmlConfigurator.Configure(newLog4net);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)