@AroundInvoke でアノテーションが付けられたメソッドを使用して Interceptor を作成し、メソッド呼び出しと関連するタイミングをログに記録しました。これは、CDI AOP http://java.dzone.com/articles/cdi-aop)に関する Richard Hightower の優れたブログ投稿に基づいています。
@AroundInvoke
public Object log(InvocationContext ctx) throws Exception {
Logger logger = Logger.getLogger(ctx.getTarget().getClass().getName());
logger.trace("ENTERING : "+ctx.getMethod());
long start = System.currentTimeMillis();
Object returnMe = ctx.proceed();
long executionTime = System.currentTimeMillis() - start;
logger.trace("EXITING : "+ctx.getMethod()+":"+executionTime+"ms");
return returnMe;
}
ユーザーのセッション ID をログに記録して、アプリケーション内のユーザー パスを簡単に分析できるようにしたいと考えています。ユーザーのセッションを取得するにはどうすればよいですか?
SessionContext の注入を調べましたが、API を使用してこの値を抽出する方法がわかりませんでした。
log4j MDC を見てきましたが、サーブレット フィルターを追加する必要がないようにしたいと考えていました。