付録L.6 ユーザログ機能のサンプルプログラム
ユーザログ機能の動作確認用のサンプルプログラムとして,userlogが提供されています。また,このサンプルプログラムを実行するためのソースファイルと定義ファイルのサンプルとして次の表に示すファイルが提供されています。
ファイル名 |
用途 |
---|---|
UserLogServlet.java |
ユーザログのサーブレットプログラムです。 |
UserLogHome.java |
ホームインタフェースです。 |
UserLog.java |
リモートインタフェースです。 |
AdderEJB.java |
整数の合計を計算するEnterprise Beanの実装クラスです。 |
sample.properties |
プロパティにセットするロガーのサンプルプロパティです。 |
MyFormatter.java |
フォーマッタとして提供される独自クラスです。 |
MyFilter.java |
フィルタとして提供される独自クラスです。 |
これらのファイルは,次の場所にあります。
<Application Serverのインストールディレクトリ>\CC\examples\userlog
ユーザログ機能のサンプルプログラムの概要と実行手順を説明します。
(1) ユーザログ機能のサンプルプログラムの概要
このサンプルプログラムでは,三つのタイプのログ出力を実行できます。
-
タイプ1:Sample for outputting messages from servlet
入力されたメッセージがサーブレット側から出力されます。
-
タイプ2:Sample for outputting the entered numbers and total value from AdderEJB
入力された整数の合計を計算する「AdderEJB(Enterprise Bean)」から,入力した値とその値を足した合計値がログファイルに出力されます。
-
タイプ3:Sample for outputting exception logs from the servlet
Exceptionが発生し,その内容がサーブレットからログファイルに出力されます。
サンプルプログラムでは,次の図に示す流れで処理が行われます。
[入力]画面で選択するロガー名およびログレベルによって,出力先のログファイルが異なります。
-
ロガー名「com.example.userlogger1」を選択した場合は,どのレベルを指定してもlogfileAに出力されます。
-
ロガー名「com.example.userlogger1」を選択して,ログレベルで「SEVERE」以上を指定した場合は,logfileAとlogfileBに出力されます。
-
ロガー名「com.example.userlogger2」を選択し,ログレベルで「INFO」以上を指定した場合,かつ「MyFilter」によってフィルタリングされなかった場合に,logfileCに出力されます。出力フォーマッタは「MyFormatter(独自クラス)」が使用されます。
- MyFormatterの仕様
-
次の形式で出力します。
message:<入力されたメッセージ> LEVEL:<指定されたレベル>
- MyFilterの仕様
-
メッセージの頭に「debug:」が付いているものは,ログに出力しません。
(2) ユーザログ機能のサンプルプログラムの実行手順
サンプルプログラムの実行手順を示します。
(a) J2EEサーバのセットアップ
「付録L.1(1) J2EEサーバのセットアップ」を参照してください。
(b) サンプルファイルのコンパイル
サンプルで提供するバッチファイル(compile.bat)を使用して,ユーザログサンプルをコンパイルします。
コンパイルすると「myloglib.jar」というファイルが作成されます。これを任意のディレクトリに格納し,JARファイルにパスを通します。パスを通す方法については,マニュアル「アプリケーションサーバ 機能解説 拡張編」の「8.7.2 コンテナ拡張ライブラリを利用する方法」を参照してください。
(c) プロパティ情報の設定
セットアップしたサーバにプロパティ情報を設定します。セットアップしたサーバのusrconf.propertiesの内容の一部を,サンプルで提供する設定ファイル(sample.properties)に書き換えます。Management Serverを利用してシステムを構築している場合は,マニュアル「アプリケーションサーバ 機能解説 拡張編」の「8.8 J2EEアプリケーションのユーザログ出力の設定」を参照して設定してください。
セットアップしたサーバを「MyServer」としたときのusrconf.propertiesの格納場所と,usrconf.propertiesファイル内の書き換え位置を次に示します。
-
ファイルの場所
<Application Serverのインストールディレクトリ>\CC\server\usrconf\ejb\MyServer\usrconf.properties
-
ファイルの書き換え位置
次に示す個所を,sample.propertyの内容に書き換えます。
: # user-log handler settings #ejbserver.application.userlog.CJLogHandler.<Specify handler-name>.path=user_log #ejbserver.application.userlog.CJLogHandler.<Specify handler-name>.count=2 : # user-log logger settings #ejbserver.application.userlog.Logger.<Specify logger-name>.handlers=<Specify handler-class> #ejbserver.application.userlog.Logger.<Specify logger-name>.useParentHandlers=true :
サンプルで提供するsample.propertiesの内容を示します。
# user-log handler settings #conf1 settings ejbserver.application.userlog.CJLogHandler.conf1.path=userlog/logFileA ejbserver.application.userlog.CJLogHandler.conf1.level=ALL ejbserver.application.userlog.CJLogHandler.conf1.appname=userlog_app ejbserver.application.userlog.CJLogHandler.conf1.formatter=com.hitachi.software.ejb.application.userlog.CJSimpleFormatter #conf2 settings ejbserver.application.userlog.CJLogHandler.conf2.path=userlog/logFileB ejbserver.application.userlog.CJLogHandler.conf2.level=SEVERE ejbserver.application.userlog.CJLogHandler.conf2.appname=userlog_app #conf3 settings ejbserver.application.userlog.CJLogHandler.conf3.path=userlog/logFileC ejbserver.application.userlog.CJLogHandler.conf3.level=INFO ejbserver.application.userlog.CJLogHandler.conf3.appname=userlog_app # user-log logger settings #logger1 settings ejbserver.application.userlog.Logger.com.example.userlogger1.handlers=com.hitachi.software.ejb.application.userlog.CJMessageFileHandler;conf1,com.hitachi.software.ejb.application.userlog.CJMessageFileHandler;conf2 ejbserver.application.userlog.Logger.com.example.userlogger1.level=ALL #logger2 settings ejbserver.application.userlog.Logger.com.example.userlogger2.handlers=com.hitachi.software.ejb.application.userlog.CJMessageFileHandler;conf3 ejbserver.application.userlog.Logger.com.example.userlogger2.level=INFO ejbserver.application.userlog.loggers=com.example.userlogger1, com.example.userlogger2
NIO HTTPサーバの設定については「付録L.1(2) J2EEサーバのカスタマイズ」を参照してください。
(d) J2EEサーバの起動
「付録L.1(3) J2EEサーバの起動」を参照してください。
(e) アプリケーションのデプロイ
「付録L.1(5) アプリケーションのインポート,設定,および開始」を参照してください。
(f) アプリケーションの実行
ブラウザを起動し,URLに次の文字列を指定します。
http://<マシン名>:<ポート番号>/<ContextRoot>/userlog.html
J2EEサーバのNIO HTTPサーバに直接アクセスする場合,デフォルトでは次のURLを指定します。
http://localhost:8008/userlog/userlog_war/userlog.html
(g) userlogの実行例
userlogの実行例を示します。アプリケーションを実行して,URLを指定すると,次に示す[実行サンプルタイプの選択]画面が表示されます。
実行するサンプルのタイプを選択し,各データ入力フォームへ移ります。この画面以降の操作とログ出力例については,選択したタイプごとに説明します。
出力結果のログファイルは,セットアップしたサーバ名を「MyServer」とした場合,usrconf.propertiesに設定したファイル名で,次に示すディレクトリに出力されます。
<Application Serverのインストールディレクトリ>\CC\server\public\MyServer\logs\user\userlog
-
タイプ1:outputting messageの実行例
[実行サンプルタイプの選択]画面で「Sample for outputting message from the servlet」タイプを選んだ場合の画面遷移とログファイルの出力例を示します。
タイプ選択後,表示された[入力]画面で次の値を入力します。
-
ロガー名:com.example.userlogger1
-
メッセージ:AAA
-
メッセージレベル:SEVERE(致命的)
次に,タイプ1を選択した場合の[入力]画面を示します。
図L‒36 [入力]画面(タイプ1:ユーザログのサンプルプログラム) 入力後,[send]ボタンをクリックすると,[入力結果表示]画面が表示されます。
図L‒37 [入力結果表示]画面(タイプ1:ユーザログのサンプルプログラム) この例では,logfileAとlogfileBに出力されます。
logfileAの出力結果を示します。
0310 2005/01/21 20:37:53.296 userlog_app 00922804 01000BCF Msg_100 2005/01/21 20:37:53|UserLogServlet|doPost|致命的|AAA
logfileBの出力結果を示します。
0888 2005/01/21 19:41:03.609 userlog_app 00922804 009B6220 Msg_100 AAA
-
-
タイプ2:outputting the entered numbers and total valueの実行例
[実行サンプルタイプの選択]画面で「Sample for outputting the entered numbers and total value from AdderEJB」タイプを選んだ場合の画面遷移とログファイルの出力例を示します。
タイプ選択後,表示された[入力]画面で次の値を入力します。
-
ロガー名:com.example.userlogger1
-
入力数:10
次に,タイプ2を選択した場合の[入力]画面を示します。
図L‒38 [入力]画面(タイプ2:ユーザログのサンプルプログラム) 入力後,[send]ボタンをクリックすると,[入力結果表示]画面が表示されます。
図L‒39 [入力結果表示]画面(タイプ2:ユーザログのサンプルプログラム) この例では,logfileAだけに出力されます。
logfileAの出力結果を示します。
0324 2005/01/21 20:38:59.500 userlog_app 00922804 015C998A Adder_200 2005/01/21 20:38:59|AdderEJB|add|情報|inputNumber = 10 0327 2005/01/21 20:38:59.500 userlog_app 00922804 015C998A Adder_201 2005/01/21 20:38:59|AdderEJB|getTotal|情報|total = 10
-
-
タイプ3:outputting exception logsの実行例
[実行サンプルタイプの選択]画面で「Sample for outputting exception logs from the servlet」タイプを選んだ場合の画面遷移とログファイルの出力例を示します。
タイプ選択後,表示された[入力]画面で次の値を入力します。
-
ロガー名:com.example.userlogger2
次に,タイプ3を選択した場合の[入力]画面を示します。
図L‒40 [入力]画面(タイプ3:ユーザログのサンプルプログラム) 入力後,[send]ボタンをクリックすると,[入力結果表示]画面が表示されます。
図L‒41 [入力結果表示]画面(タイプ3:ユーザログのサンプルプログラム) この例では,logfileCだけに出力されます。
logfileCの出力結果を示します。
1077 2005/01/21 19:55:19.328 userlog_app 00922804 006458A6 Exp_300 message:Exception LEVEL:SEVERE
-
(h) アプリケーションのアンデプロイ
「付録L.1(6) アプリケーションの停止,削除」を参照してください。
(i) J2EEサーバの終了
「付録L.1(7) J2EEサーバの終了」を参照してください。