让log4net使用配置数据的应用程序配置文件
我想将log4net配置数据存储在我的application.config文件中。根据我的文档的理解,我做了以下内容:让log4net使用配置数据的应用程序配置文件
增加提及log4net.dll
-
添加以下行的AssemblyInfo.cs:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
-
初始化记录器如下:
private static readonly ILog log = LogManager.GetLogger(typeof(frmWizard));
我在我的app.config下面的代码:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="ConsoleAppender" />
</root>
</log4net>
然而,当我运行应用程序,我得到的控制台上出现以下错误:
无附加器名为[是ConsoleAppender ]可以找到。
如何让log4net从配置文件中读取设置?
谢谢!
行添加到您的app.config在configSections元素
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler, log4net, Version=1.2.10.0,
Culture=neutral, PublicKeyToken=1b44e1d426115821" />
</configSections>
再后来添加log4net的部分,而是委托给其他地方的实际log4net的配置文件...
<log4net configSource="Config\Log4Net.config" />
在您的应用程序代码中,创建日志时,请写
private static ILog GetLog(string logName)
{
ILog log = LogManager.GetLogger(logName);
return log;
}
谢谢正是我所需要 – Jay 2010-03-04 13:33:19
您是否尝试过向您的app.config添加configsection
处理程序?例如
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
从问题中显示的配置只有一个appender配置,它被命名为“EventLogAppender”。但是在root的配置中,作者引用了一个名为“ConsoleAppender”的appender,因此出现了错误消息。
所有的appender名称必须反映在根节中。
在你的情况下,appender的名字是EventLogAppender但在<root> <appender-ref ..
部分它命名为ConsoleAppender。他们需要匹配。
您可以将多个appender添加到您的日志配置中,但您需要在<root>
部分中注册它们中的每一个。
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="EventLogAppender" />
你也可以参考apache documentation配置log4net。
我完全支持@Charles BRETANA的答案。但是,如果它不能正常工作,请确保有只有一个<section>
元素和configSections
是根元素的第一个孩子:
configsections
必须是第一个元素在你的app.Config
配置后:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821" />
</configSections>
<!-- add log 4 net config !-->
<!-- add others e.g. <startup> !-->
</configuration>
你在你的app.config有什么码? – sgwill 2008-12-16 21:11:19
注给他人:显示的`app.config`设置,显然,正确*除了*为`EventLogAppender`被命名在``部,和`ConsoleAppender`被命名在``部分 - 不匹配。看@康斯坦丁的答案。此外,**利用这个问题别人不熟悉log4net的**来学习如何使用它 - **注意,你可能会想的附加目的地不同类型* ** *比这里的一个 - 比如`TYPE =“log4net的.Appender.FileAppender,log4net“(附加到文件,不附加到Windows事件日志)。 –
2014-01-28 18:13:50