log4net to sqlserver:データベースが利用できない場合はどうなりますか?

StackOverflow https://stackoverflow.com/questions/3778785

  •  04-10-2019
  •  | 
  •  

質問

SQL ServerデータベースにLog4Net Ado Appenderを書き込みました。私はそれが好きです、私はそれがきちんとしていると思います。生産に送信する前に、データベースがダウンした場合に動作がどうなるかを知りたいです。

ロギングデータベースが利用できないため、アプリケーションを停止したくありません。 log4netは静かに失敗し、何もしないと推測しています。少なくともそれは私が望んでいることです。誰もがこれを確認できますか、それとも(より良い)これを確認するいくつかのドキュメントを教えてもらえますか?

役に立ちましたか?

解決

Appender(私が知っているすべてのlog4net付属品と同様)は、静かに失敗し、したがってロギングを停止します。ただし、再接続を試みるようにAppenderを構成できます。

<reconnectonerror value="True" />

その場合、DB接続文字列で接続時間を指定する必要があります。

Connect Timeout=1

そうしないと、DBがオフラインである場合、アプリケーションは非常に遅くなります。

他のヒント

.NET 4.5.1以降に設定する必要がある場合 ConnectRetryCount=0; 接続文字列に。

Appender Configuration:

<ReconnectOnError value="true" />
<connectionString value="...Connect Timeout=1;ConnectRetryCount=0;" />

log4net.asyncのような非同期ロギングを行うと、接続タイムアウトはデフォルトの15秒のままになる場合があります。

詳細

.NET 4.5.1は、ADO.NET接続の弾力性を追加します。これは、ConnectRetryCountを使用して再接続しようとしていても、接続がまだ開いていることをlog4netに伝えることを示します。ただし、log4netに再接続を実行させたいので、ConnectRetryCountの最大255があります。ConnectRetryCountを0に設定する必要があります。 https://issues.apache.org/jira/browse/log4net-442 https://blogs.msdn.microsoft.com/dotnet/2013/06/26/Announcing-the-net-framework-4-5-1-preview/

使用 Reconnectonerror DBサーバーが利用可能になったら、再びログを開始できるようになりますが、サーバーがダウンしている間に中間ログメッセージが紛失します。 log4netには、DBサーバーが利用可能になったメッセージを持続するための規定がないと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top