2

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>
4

4 に答える 4

4

解決策は、(最後の) ログ エントリが作成された後、十分な時間待機することです。その後に十分なコードがある場合、または Task.Delay(1000) などでコードを実行するのにかかる時間が不明な場合。
この理由は、logentries アペンダーが内部的に非同期で動作するため、ログがサーバーに送信される前に、プログラムがログ スレッドを終了して終了する可能性があるためと思われます。残念ながら、これが実際に起こったという兆候はありません。

于 2014-05-08T07:57:29.253 に答える
0

MinialLock を含めるようにアペンダーのロック モデルを変更することをお勧めします。

<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />

http://www.codeproject.com/Articles/140911/log-net-Tutorial

于 2014-05-07T15:55:53.640 に答える
0

おそらくこれは非常に遅い返信ですが、私は同じ問題に直面しており、ネット上で何日も生産的なものを見つけることができませんでした. 最終的に私は解決策を見つけて、誰かを助けるかもしれないのでここで更新することを考えました.

解決策はかなり簡単です。これの代わりに

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

タグ自体にトークンを含めます。

<appender name="LeAppender" type="log4net.Appender.LogentriesAppender, LogentriesLog4net">
    **<Token value="XXXXXX-XXXXXX-XXXXXXXXX-XXXXXXX"/>**
    <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>

Logentries のドキュメントでは、appsettings 内にトークンを追加することについて言及されていますが、いくつかの不明な理由により、そこからトークンを取得しているようです。

また、プロジェクトのターゲット .net フレームワークが >= 4.0 であることを確認してください。

参考までに:私は使用しています

  1. Log4net 1.2.15

  2. LogentriesLog4net 2.8.0

  3. LogentriesCore 2.8.0

これが誰かに役立つことを願っています。

于 2016-11-04T06:56:09.783 に答える