我正在尝试使用log4net将一些数据记录到www.logentries.com。
我的问题是,我尝试记录的所有内容都显示在FileAppender中,但logentries.com上没有显示任何数据。
我试图获取一些错误信息并启用了log4net内部日志记录,但是该文件不包含任何错误消息。
在这一点上,我真的很笨,无法检查可能的错误...

基本的日志记录代码就是这段代码

private static readonly ILog logger = LogManager.GetLogger(typeof(Logentries));

static void Main(string[] args) {
    XmlConfigurator.Configure();
    logger.Fatal("Fatal message");
}


我将此行添加到我的AssemblyInfo.cs

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "App.config", Watch = true)]


我的App.config设置如下:

<configSections>
  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
  <appender name="LeAppender" type="log4net.Appender.LogentriesAppender, LogentriesLog4net">
    <ImmediateFlush value="true" />
    <Debug value="true" />
    <HttpPut value="false" />
    <Ssl value="false" />
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="%d{ddd MMM dd HH:mm:ss zzz yyyy} %logger %: %level%, %m, " />
    </layout>
  </appender>
  <appender name="FileAppender" type="log4net.Appender.FileAppender">
    <file value="C:\log-file.txt" />
    <appendToFile value="true" />
    <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
    </layout>
  </appender>
  <root>
    <level value="ALL" />
    <appender-ref ref="LeAppender" />
   <appender-ref ref="FileAppender" />
  </root>
</log4net>

<appSettings>
  <add key="Logentries.Token" value="XXXXXX-XXXXXX-XXXXXXXXX-XXXXXXX" />
  <add key="log4net.Internal.Debug" value="true" />
</appSettings>

最佳答案

解决方案是在(最后一个)日志条目输入后等待足够长的时间。它后面有足够的代码,或者不确定用Task.Delay(1000)或类似的东西执行代码要花多长时间。
这样做的原因似乎是由于logentries附加程序在内部异步工作,因此程序可以在将日志发送到服务器之前完成并终止日志记录线程。不幸的是,没有任何实际迹象表明发生了这种情况。

09-19 06:49