2

Javaロギングから拡張され、ファイルを毎日ローテーションできるハンドラーが必要な要件があります。

現在、Java utilロギングは、ファイルハンドラーを使用したファイルサイズに基づくローテーションをサポートしています。日常のローテーションはサポートしていません。http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6350749

だから、私たちが探しているのは、毎日の回転を可能にするようなアペンダーを探しています。そのようなハンドラーを作成したいと思います。これを拡張するのに適切なハンドラーはどれですか...StreamHandlerまたはFileHandler?そして、他の質問は、単一のハンドラーに対して2つの異なるファイルを構成する方法がありますか?たとえば、FileHandlerは、ある種のメッセージを1つのファイルにキャプチャし、他のメッセージを別のファイルにキャプチャする必要があると言います。

コメントをいただければ幸いです。

4

3 に答える 3

1

ログローテーション-Apacheは世界最大のコードハウスの1つであり、Apacheを使用するプロジェクトは数百万あると確信していることを経営陣に伝えてください。しかし、「管理上の決定」を繰り返したので、独自のFileHandlerを記述したり、Javaファイルハンドラーを使用したり、タスクを記述したり、テストの何百ものシナリオを記述したりできます(ハンドラーがファイルを追加するときにファイルをクォーツローリングするなど)。

FileHanderが2つのファイルに書き込む-FileHandlerをサブクラス化する(ファイルハンドラーはこれら2つのファイルにいつ送信するかを知っている必要があります)しかし、規定された 解決策は、2つの異なる名前と2つのアペンダーが接続された2つの実際に異なるロガーを使用することです。単一のJavaソースで、必要な数のロガーにロギングを実行できます。

class MyClass {
    Logger fileLogger = Logger.getLogger("something.mapped.to.file");
    Logger dbLogger = Logger.getLogger("something.mapped.to.db");

    public void someMethod() {
        dbLogger.log("XXX");
        fileLogger.log("YYY");
    }
}
于 2010-03-18T09:50:06.417 に答える
1

クォーツタスクは必要ありません。ファイルを壊す必要があるかどうかを各ログで確認します。

于 2012-10-03T20:29:14.257 に答える
0

毎日00:00に実行されるスケジューラー(Quartzスケジューラーなど)を作成できます。コードにFileHandlerの処理を実行させ、ファイルのローテーションを実行させます。

于 2010-03-18T06:06:38.433 に答える