2

私たちは現在のアプリケーションのログ記録に log4net を使用していますが、ログ フレームワークが現在それを中心に構築されている方法が好きではありません。たとえば、現在、単一障害点があり、何らかの理由でログ サーバーに接続できない場合、ログが記録されません。プライマリ アペンダに障害が発生した場合に使用する 1 つまたは複数の「バックアップ」アペンダを指定できる、柔軟でありながらシンプルなフレームワークとして構築したいと考えています (たとえば、ログ サーバーがダウンしている場合は、ファイルに書き込みます)。代わりは)。

あなたが好きでよく書かれていると思ったこのようなものに出くわした人はいますか? 私は自分自身を転がすことを気にしませんが、車輪を再発明しないようにすることの大ファンです.

ありがとう

4

3 に答える 3

2

私が遭遇したものはまだ構築されていません。既存のアペンダーを使用する独自のアペンダーを作成することをお勧めしますが、失敗が発生したときに何をすべきかのプロパティを追加します。AppenderSkeletonを新しいアペンダーの基本クラスとして使用し、そこから使用するアペンダーの追加関数を呼び出すことができます。

したがって、log4 がロガーを使用する場合、次のようになります (注: これは完全ではありませんが、出発点となるはずです)。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using log4net.Appender;
using log4net.Core;

namespace logger {
    class FailoverAppender : AppenderSkeleton {

        protected override void Append(LoggingEvent loggingEvent) {
            // Send the log message to the web service.
            try {
                FirstAppender.Append(loggingEvent);
            }
            catch (Exception e) {
                try{
                    SecondAppender.Append(loggingEvent);
                }
                catch (Exception e2){
                    ErrorHandler.Error("An error occurred while connecting to the logging service.", e);
                }
            }
        }
    }
}

これが開始に役立つことを願っています。完了したら、ここにもソリューションを投稿できます。

于 2012-04-05T20:12:16.693 に答える
0

log4netはセットアップが面倒なので、代わりにNLogを使用することにしました。NLog は使いやすく、セットアップも簡単で、コードベースは最新の状態に保たれています (log4net はほとんど放棄されています)。

于 2012-04-13T16:01:25.417 に答える