log4net,这个配置文件有什么问题?

8

log4net报告如下:

找不到任何记录器的附加程序 log4net:Logger,请正确初始化 log4net 系统。

我有一个独立的 log4net 配置文件:

<!--?xml version="1.0"?-->
<configuration>
  <configsections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821" />
  </configsections>
  <log4net>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="c:\temp\log.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="5MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>


  </log4net>
</configuration>

...并且这是应用程序的启动代码

private static ILog logger;
protected void Application_Start(object sender, EventArgs e)
{
    ////This tells log4net where to go and look for its configuration file and also to watch it for any changes
    log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(@"C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\Config\Moogle\Log4Net.config"));
    logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
    logger.Debug("Application_Start Fired");
1个回答

20

您仅定义了一个appender。您还需要定义一个root logger和一个logger来使用该appender(如果您仅需要一个,则它们可以是同一个logger)。在您的log4net配置中添加以下root element。

<root>
  <level value="DEBUG" />
  <appender-ref ref="RollingLogFileAppender" />
</root>

3
不想干扰一个5岁的问题,但其他人可能会发现它很有用,因为在意识到这一点之前,我浪费了大约两个小时。显然,appender name和appender-ref值是区分大小写的。我在根中定义了ref="ADONetAppender",而在appender定义中定义了<appender name="AdoNetAppender",这导致logger完全找不到appender... - Selim Balci
1
没有根元素是我的问题。我能够创建日志文件,但浪费了2个小时尝试各种初始化问题、配置问题等等。这解决了我的问题。 - hanzolo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接