付録A.7 ログを出力するポートレット

ログ出力Beanを使用して,ログを出力するポートレットを開発できます。ポートレットログの出力レベルによって,出力されるログの種類が異なります。出力レベルはデフォルトでは0が設定されています。ログ出力Beanの詳細は,「14.7 ログ出力Bean」を参照してください。

ポートレットログの出力レベルと出力されるログの内容を次の表に示します。

表A-3 ポートレットログの出力レベルと出力されるログの内容

出力レベル出力されるログ内容
0error,printStackTrace通常運用でのトレースレベルです。
10warn監視対象を必要とするトレースレベルです。プログラムの実行性能に影響を与えない範囲で出力します。
20note障害調査時に設定するトレースレベルです。プログラムの動作シーケンスを把握できる内容を出力します。
30debug障害調査時に設定するトレースレベルです。プログラムの動作が完全に把握できる内容を出力します。

ログ出力Beanのメソッドは,次の方針に従って使用します。方針に従わない場合,必要なログが得られない,または大量のログが出力されるなどの問題が起きるので注意してください。

errorおよびprintStackTrace
ポートレットの起動・終了のメッセージ,および業務に支障があるエラーメッセージを出力します。トランジェントオブジェクトの起動や終了のメッセージはこのレベルでは出力しません。
warn
主要なリクエストをトレースし,システムの大まかな動きが把握できるレベルのトレースを出力します。発生頻度の低い障害の再発監視や本番前の現地テストへの適用を想定しています。トレースの出力量をシステムの性能に影響を与えない範囲に抑える必要があります。
note
再現性のある障害に対し,障害の部位を明確に分類するために使用します。ほかのプロセスとの通信など,ほかのプログラムとの関連を把握するのに十分な情報,およびプログラムの大体の動作を把握できるトレース情報を出力します。
debug
障害の個所を特定するために使用します。主要なメンバ関数の開始や終了が取得およびトレースできる内容を出力する必要があります。

ログを出力するポートレットの例を次に示します。

<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean" %>
<%@ page import="jp.co.hitachi.soft.portal.api.user.PortalUserInfoBean" %>
<%@ page import="jp.co.hitachi.soft.portal.api.log.PortletLog" %>
<%
 String uri = "error.jsp";
 PortletLog logger = new PortletLog();
 
 try {
   logger.setApplication("logging");
 
   PortletInfoBean pInfo = new PortletInfoBean();
   pInfo.initBean(request);
 
   PortalUserInfoBean userInfo = new PortalUserInfoBean();
   userInfo.setRequest(request);
 
   // ログイン済みかチェック
   if (userInfo.checkLoggedIn()) {
     PortletInfoBean.Mode mode = pInfo.getMode();
 
     if (mode == PortletInfoBean.Mode.DEFAULT) {
       logger.note("CALL logic1");
       // ここにサマリ画面用業務ロジック呼び出しを追加する
       logger.note("RET logic1");
 
       uri = "summary.jsp";
     } else if (mode == PortletInfoBean.Mode.MAXIMIZE) {
       logger.note("CALL logic2");
 
       // ここに最大化画面用の業務ロジック呼び出し追加する
       logger.note("RET logic2");
       uri = "main.jsp";
     }
   }
 } catch (Exception e) {
   // エラーメッセージ出力
   logger.error("Error occured", e);
   uri = "error.jsp";
 }
%>
<!-- includeを用いたビューの呼び出し -->
<jsp:include page="<%= uri %>" flush="true"/>