【问题标题】:What am I doing wrong with this log4net implementation?这个 log4net 实现我做错了什么?
【发布时间】:2014-10-21 18:22:47
【问题描述】:

像许多其他人一样,我正在尝试将 Log4net 实现到我的 C#.net 应用程序中,但我无法让它为我工作。我做了很多搜索(包括在这个网站上)并尝试了许多不同的解决方案,但还没有对我有用。所以一个简单的问题:我做错了什么???

Assembly.cs 包含以下行。

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

App.config 包含以下内容。

<configSections> 
  <section name="log4net" 
           type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 
</configSections>
<log4net> 
  <root> 
    <level value="ALL"/> 
    <appender-ref value="RollingFileAppender"/> 
    <appender-ref value="ConsoleAppender"/> 
  </root>
  <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">  
    <param name="File" value="C:\Temp\Minion.log" />
    <appendToFile value="true" />
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="5" />
    <maximumFileSize value="10MB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">  
      <conversionPattern value="%date{Y-m-d H:i:s.u} | %thread | %method | %level | %message%newline" />
    </layout>
  </appender>
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
    <layout type="log4net.Layout.PatternLayout">
      <param name="Header" value="[Header]\r\n" />
      <param name="Footer" value="[Footer]\r\n" />
      <param name="ConversionPattern" value="%date{Y-m-d H:i:s.u} | %thread | %method | %level | %message%newline" />
    </layout>
  </appender>
</log4net>

我的代码在课程的开头包含以下内容。

private static readonly ILog logger =
LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

这些测试在 main 函数的开头。

logger.Debug("test1");
logger.Info("test2");
logger.Warn("test3");
logger.Error("test4");
logger.Fatal("test5");

编辑:

一个提示导致 log4net 初始化期间出现以下错误。

log4net:ERROR XmlHierarchyConfigurator: No appender named [] could be found.
log4net:ERROR Appender named [] not found.
log4net:ERROR XmlHierarchyConfigurator: No appender named [] could be found.
log4net:ERROR Appender named [] not found.

【问题讨论】:

  • 顺便说一句,我建议不要使用[XmlConfigurator] 属性,因为这在 log4net 初始化时并不清楚——而且它有一个不总是有效的坏习惯(在 ASP.NET 站点中) , 例如)。相反,请从您的 Main() 显式调用 XmlConfigurator.ConfigureAndWatch(new FileInfo(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile))。
  • 您尝试拨打XmlConfigurator.Configure() 吗?
  • 杰罗恩:啊。是的,我做到了,但我之前一定有错字。这次我实际上有一个日志文件要查看。感谢您提示第二次拍摄。我会检查一下并报告。
  • 这种格式很糟糕。用新信息编辑了主要帖子。

标签: c# log4net


【解决方案1】:

改变这个:

<appender-ref value="RollingFileAppender"/> 
<appender-ref value="ConsoleAppender"/> 

到这里:

<appender-ref ref="RollingFileAppender"/> 
<appender-ref ref="ConsoleAppender"/> 

看看会不会更好地合作。

【讨论】:

    【解决方案2】:

    我遇到了这个问题,这是因为在 root 中我有两个引用,而在代码中我只调用了一个。示例:

    <root>
          <level value="INFO"/>
          <appender-ref ref="FileAppender"/>
          <appender-ref ref="ConsoleAppender" />
    </root>
    
    private static readonly log4net.ILog logger = LogManager.GetLogger("FileAppender");
    

    在这种情况下,我给出了错误。删除其中一个根引用,然后重试。像这样

    <root>
          <level value="INFO"/>
          <appender-ref ref="FileAppender"/>
    </root>
    
    private static readonly log4net.ILog logger = LogManager.GetLogger("FileAppender");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-26
      • 2015-02-25
      相关资源
      最近更新 更多