メニュー

ドキュメント

サブプロジェクト

リンク

PHP プロジェクト

Seasar.PHP

Sandbox.PHP

S2Javelin.PHP5 プロジェクトへようこそ!

 S2Javelin.PHP5プロジェクトでは、avaで実装された S2Javelin に含まれる JavelinTraceInterceptor を PHP5 に移植します。S2JavelinTraceInterceptor によって出力されるトレースログは、 ArrowVision という表示用ツールによりビジュアルに表示することができます。 ArrowVisionは、エスエムジー株式会社のホームページから、無償でダウンロードすることができます。


ダウンロード


動作環境

 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 をロギングすることができます。