Log4j には、そのままではそのようなアペンダーがありません。ただし、次のことを行うことができます。
ギガバイトのデータを使用するサード パーティ ライブラリのアペンダーを追加します (「サード パーティ ライブラリからエラー カテゴリに書き込まれたギガバイトのログがあります」)。また、アペンダーがそのような大量のストレージを使用しないように構成します。
RollingFileAppender このサード パーティ ライブラリ アペンダーをローリング ファイルとして構成します。しばらくすると、最も古いファイルが使用されるようになり、最新のログのみを保持できます。
JDBCAppender
このアペンダーは、ストアド プロシージャの使用を受け入れます。必要な処理が実行されるストアド プロシージャを記述します。
最初の要件では、計算された列を追加するか、ストアド プロシージャでこの値を計算して、テーブルの列に追加します。次に、この値を制御して、このログ行をデータベースに挿入する必要があるかどうかを決定します。
2 番目の要件では、例外メッセージのハッシュ値 (MD5、SHA など) を取得できます。このハッシュ値がデータベース テーブルに存在する場合は、無視して挿入できます。または、存在する数を数えて、それに応じてデータベースに挿入する方法を決定することもできます。
これらの目的でエンタープライズ データベースを使用する必要はありません。たとえば、apache derby を使用すると、すべてのログがアプリケーション サーバーに残ります。この JDBCAppender は、要件をより厳密に満たしていると思います。