4


0

「信頼できる」ロギングとは正確には何ですか?

先日、Enterprise Library Logging Application Blockとlog4netについて話していました。

私が気づいたのは、log4netが主張していることです:http://logging.apache.org/log4net/release/faq.html [log4netは信頼できません。 ベストエフォート型のフェイルストップロギングシステムです。]

驚いたことに、エンタープライズライブラリのログが「信頼できる」かどうかを確認しようとしていました。 これは、http://www.microsoft.com/downloads/details.aspx?FamilyId = 24F61845-E56C-42D6-BBD5-29F0D5CD7F65&displaylang = en ["reliable"]という単語が明示的に使用されている場所です。 (それは2004バージョンからのものであることに注意してください)

それで、これは私に好奇心をそそりました。正確に「信頼できる」ロギングとは何ですか? Enterprise Library Loggingアプリケーションブロックが(現在のバージョンで)信頼できるかどうかを誰かが知っている場合、これを明示的に記述しているドキュメントに向けてください。

ありがとう。

3 Answer


1


「信頼できる」とは、メッセージが送信されると、エンドデバイスに配信されるか、物理的に書き込まれることが保証されていることを意味すると思います。


1


log4netやEnterprise Libraryなどのほとんどのロギングライブラリは、ロギングプロセス中にスローされる可能性のある例外を飲み込んで、アプリケーションが停止しないようにします。 このため、これらのライブラリを「信頼できる」と呼ぶことはできません(log4netのドキュメントによる)。

私の意見では、イベントのログ記録に失敗すると重大な失敗になり、カーペットの下に流されてはなりません。 欠落しているログメッセージは、ハッカーがトラックを隠すために悪用される可能性があります。少なくとも、問題の根本原因を見つけるのがはるかに困難になります。

私にとって、これはhttp://logging.codeplex.com [CuttingEdge.Logging]というロギングライブラリを構築する理由の1つでした。 CuttingEdge.Loggingのログプロバイダーは、イベントをログに記録できなかった場合、常に例外をスローします。 特定のロガーに対して「フォールバックプロバイダー」を設定することにより、ユーザーは例外が呼び出しスタックをバブリングするのを防ぎ、フォールバックプロバイダーが元のメッセージと失敗したロガーによってスローされた例外を記録できるようにします。 フォールバックプロバイダー自体にもフォールバックプロバイダーを構成できます。このメカニズムにより、CuttingEdge.Loggingの使用時に例外がログに記録されることはほとんどありません。


0


見たところ、「信頼できる」とは、メッセージが常にログに記録されることを意味します。 log4netは明らかにログを記録しようとしますが、記録できない場合は失敗し、アプリは動作を続けます。