JSPからのログ出力

Java Standard EL FunctionsにはJSPからLog4jを用いてログを出力するための関数が用意されています。 これらの関数を使用するにはJSPに以下のtaglibディレクティブを追記します。

<%@ taglib uri="http://amateras.sf.jp/log4j" prefix="log" %>

JSPからは以下のようにしてログを出力することができます。ログレベルに対応したログ出力用の関数が存在します。 利用可能な関数の詳細についてはTLDDocを参照してください。

${log:debug('デバッグログです。')}

これらの関数では、JSPのパスから以下のルールにしたがってLogger名を生成します。

  1. HttpServletRequest#getServletPath()でサーブレットパスを取得
  2. サーブレットパスの先頭の / と末尾の .jsp を除去
  3. jsp.サーブレットパスの / を . に変換した文字列 をLogger名とする

たとえば、/index.jsp の場合は jsp.index、/admin/index.jsp の場合は jsp.admin.index がLogger名になります。 Log4j側ではこれらのLoggerに対応するアペンダを定義しておくことでJSPから出力されるログを制御することができます。

ログレベルと連動したJSPの表示切替

log:printDebug()などの関数を使用すると、特定のログレベルが有効な場合にJSPに値を表示することができます。

${log:printDebug('デバッグログが有効な場合のみ表示されます。')}

また、log:isDebugEnabled()などの関数を使用すると、特定のログレベルが有効かどうかを判定することができます。 JSTLなどと組み合わせることでログレベルによってブロックの表示の可否を切り替えることができます。

<c:if test="${log:isDebugEnabled()}>
  デバッグログが有効な場合のみ表示されます。
</c:if>

これらの関数はログレベルに対応したものが用意されています。 利用可能な関数の詳細についてはTLDDocを参照してください。