S2Javelin.PHP5 プロジェクトへようこそ!
S2Javelin.PHP5プロジェクトでは、avaで実装された S2Javelin に含まれる JavelinTraceInterceptor を PHP5 に移植します。S2JavelinTraceInterceptor によって出力されるトレースログは、 ArrowVision という表示用ツールによりビジュアルに表示することができます。 ArrowVisionは、エスエムジー株式会社のホームページから、無償でダウンロードすることができます。
ダウンロード
- 2006-10-19
Pear Package : S2Javelin-1.0.0.tgz
動作環境
PHP-5.1.* で動作します。以下の環境で開発・動作確認しています。
- WindowsXP : php-5.1.6-Win32
- Debian GNU/Linux 3.1 : php-5.1.6
- CentOS 4.3 : php-5.1.4
- Mac OS X 10.4.7 : php-5.1.4
ドキュメント
セットアップ
dicon 設定
s2base.php5/app/commons/dicon/javelin.dicon に S2JavelinTraceInterceptor コンポーネントを定義済みの ダイコンファイルがあります。 このダイコンファイルをアクションダイコンやサービスダイコンで include し、S2JavelinTraceInterceptor をアスペクトすることができます。 ログファイルは、logFile プロパティで指定します。デフォルトでは、s2base.php5/var/logs/javelin.jvn です。(拡張子は .jvn として下さい。)
javelin.dicon
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN" "http://www.seasar.org/dtd/components21.dtd"> <components namespace="javelin"> <component name="javelinTraceInterceptor" class="S2JavelinTraceInterceptor"> <property name="logArgs">true</property> <property name="logReturn">true</property> <property name="logStackTrace">false</property> <property name="logFile">S2BASE_PHP5_VAR_DIR . "/logs/javelin.jvn"</property> </component> </components>
サービスダイコン
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN" "http://www.seasar.org/dtd/components21.dtd"> <components> <include path="%S2BASE_PHP5_ROOT%/app/commons/dicon/dao.dicon"/> <include path="%S2BASE_PHP5_ROOT%/app/commons/dicon/javelin.dicon"/> <component class="CdServiceImpl"> <aspect pointcut="addCd">javelin.javelinTraceInterceptor</aspect> </component> <component class="CdDao"> <aspect pointcut="insert">javelin.javelinTraceInterceptor</aspect> <aspect>dao.interceptor</aspect> </component> </components>
log4php を使用する場合の設定
S2Container のログ設定で log4php を使用する設定とすると、S2JavelinTraceInterceptor は、シーケンス情報に加えて S2Dao が発行する SQL を取得することができます。
SQL ログは ArrowVision で表示できます。
log4php 用の設定ファイルは、s2base.php5/config/log4php.properties にあります。
; [[ S2JavelinTraceInterceptor ]] log4php.category.S2JavelinTraceInterceptor = "DEBUG, Javelin" log4php.appender.Javelin = "LoggerAppenderFile" log4php.appender.Javelin.File = "/tmp/javelin.jvn" log4php.appender.Javelin.layout = "S2JavelinPatternLayout" log4php.appender.Javelin.layout.ConversionPattern = "%m%n" ; [[ S2Dao Logger ]] log4php.category.S2Dao_BasicSelectHandler = "DEBUG, DaoSql" log4php.category.S2Dao_InsertAutoHandler = "DEBUG, DaoSql" log4php.category.S2Dao_UpdateAutoHandler = "DEBUG, DaoSql" log4php.category.S2Dao_DeleteAutoHandler = "DEBUG, DaoSql" log4php.appender.DaoSql = "LoggerAppenderFile" log4php.appender.DaoSql.layout = "S2JavelinPatternLayout" ; [[ S2Dao Javelin ]] log4php.appender.DaoSql.File = "/tmp/javelin.jvn" log4php.appender.DaoSql.layout.ConversionPattern = "Write ,%d{Y/m/d H:i:s u},,DaoSQL,0,%M,%C,0,public,%t%n <<javelin.FieldValue_START>>%n%m%n<<javelin.FieldValue_END>>%n%n"ログファイルはデフォルトで /tmp/javelin.jvn となります。S2Container のログ設定や log4php の設定は s2base.php/config/environment.inc.php の Log setting で行います。
<?php ・・・ ・・・ ・・・ /** * Log level setting */ define('S2CONTAINER_PHP5_LOG_LEVEL', S2Container_SimpleLogger::DEBUG); ・・・ ・・・ ・・・ /** * log4php setting */ S2Container_S2LogFactory::$LOGGER = S2Container_S2LogFactory::LOG4PHP; define('LOG4PHP_DIR', S2BASE_PHP5_ROOT . '/lib/log4php-version/src/log4php'); define('LOG4PHP_CONFIGURATION', S2BASE_PHP5_ROOT . '/config/log4php.properties'); require_once(LOG4PHP_DIR . '/LoggerManager.php'); ?>S2CONTAINER_PHP5_LOG_LEVEL 定数を DEBUG レベルに設定することで、S2Dao が発行する SQL をロギングすることができます。