私はデータベースlog4jアペンダーをPlayに書いています。Playからデータベースロガーを作成する - エラーを処理する方法?
そのappend()
メソッドでは、モデルエンティティLog4jLineの新しいインスタンスがJPA経由でsaves()
に作成されます。
これは、デバッグ/情報ログで正常に動作します。ただし、例外は記録されません。 フレームワークコードからのこのアペンダへの呼び出しがありますが、JPAセッションがこの時点で有効ではないため、動作していない可能性があります。
このユースケースをサポートするためにコードをどのように変更すればよいですか?
public class DBAppender extends AppenderSkeleton {
@Override
protected void append(LoggingEvent loggingEvent) {
Log4jLine logLine = new Log4jLine(...);
logLine.save();
}
}
私はそれを修正する方法がわかりませんが、コントローラーメソッドの1つから例外をスローすると、Play FrameworkはトランザクションをsetRollbackOnlyとしてマークするので、起こっています。 – Todd
@Todd - 別のトランザクションでログを書き込む必要があります。 – ripper234