Develop and Download Open Source Software

最近の更新

2012-04-05
2012-03-27

Wikiガイド

サイドバー

戻る

Step6:ログを出力してみる

このチュートリアルを行う前に……

  • Risolutoのセットアップが終了している必要があります
  • これまでのチュートリアルを理解している必要があります

ログを出力する(Base編)

このチュートリアルでは、ログを出力する方法についてご説明したいと思います。

こちらもさほど難しい話ではありませんので、実際のコードを見てみましょう。Step5で作成した「samples_base.inc」を下記のように修正してください。この手順を行うことによって、このsamples_baseクラスを継承したすべてのLogicでログ出力を行うことができるようになります。


<?php

  
require_once( 'Smarty.class.php' );
  require_once( 
RISOLUTO_FUNC 'risoluto_conf.php' );
  require_once( 
RISOLUTO_FUNC 'risoluto_log.php'  );

  abstract class 
samples_base
  
{
    protected 
$smarty;
    protected 
$obj_conf;
    protected 
$obj_log;

    abstract function 
model();
    abstract function 
view();

    public function 
__construct()
    {
    }

    public function 
__clone()
    {
    }

    public function 
init()
    {

      
$this->obj_conf = new RisolutoConf();
      
$this->obj_conf->parseRISOLUTO_CONF 'risoluto.ini' );

      
$this->obj_log RisolutoLog::singleton();

      
$this->smarty                = new Smarty;
      
$this->smarty->template_dir  RISOLUTO_USERLAND "samples";
      
$this->smarty->config_dir    RISOLUTO_USERLAND "samples";
      
$this->smarty->compile_dir   RISOLUTO_CACHE;
      
$this->smarty->cache_dir     RISOLUTO_CACHE;
      
$this->smarty->caching       false;
      
$this->smarty->debugging     false;
      
$this->smarty->force_compile true;
      
$this->smarty->compile_check true;
    }

    public function 
errHandler()
    {
    }

    public function 
clean()
    {
      unset( 
$this->smarty );
      unset( 
$this->obj_conf );
      unset( 
$this->obj_log );
    }

  }
?>

追加したものについて、簡単にご説明したいとおもいます。

まず、「require_once( RISOLUTO_FUNC . 'risoluto_log.php' );」が追加されました。Risolutoが標準で用意しているログ出力用クラスを読み込みます。

「protected $obj_log;」という1行も追加されています。これはログ出力用クラスのインスタンスを保持するためのクラス変数です。名称は任意ですが慣例としてこの名称にしておくことが推奨されています。

「$this->obj_log = RisolutoLog::singleton();」がinit()メソッドに追加されていることにお気づきでしょうか。ここでクラスインスタンスの生成を行っています。

clean()メソッドに「unset( $this->obj_log );」が追加されているのも確認いただけるかと思います。

これらを各Logicに組み込んでも構いません*1が、一般にBaseに記述する方がよいでしょう。

ログを出力する(Logic編)

それでは、Logicの方の処理を見てみましょう。下記のコードを「sample06.php」として保存してください。


<?php
  
require_once( 'samples_base.inc' );

  class 
sample06 extends samples_base
  
{

    public function 
model()
    {
      
$this->obj_log->logging'debug''model() method was called.' );
    }

    public function 
view()
    {
      
$this->obj_log->logging'debug''view() method was called.' );
      
$this->smarty->display'sample06.tpl' );
    }

  }
?>

model()メソッドとview()メソッドの両方に「$this->obj_log->logging(~);」という1行が記載されています。この1行を記述することで、ログを出力することが可能となります。

Design側のコードもここで提示させていただきます。下記のコードを「sample06.tpl」として保存してください。


<HTML>
 <HEAD>
  <TITLE>sample06</TITLE>
 </HEAD>
 <BODY>
  ログファイルに出力されていることを確認してください。
 </BODY>
</HTML>

これらのファイルをアップロードし、最初の画面にWebブラウザからアクセスすると、ログファイルに2行分出力されているはずです。例えば、下記のように出力されます*2

[ debug at YYYY/MM/DD HH:mm:dd(JST)] model() method was called.
[ debug at YYYY/MM/DD HH:mm:dd(JST)] view() method was called.

このように、簡単にログ出力を行うことが可能です。ログ出力用クラスについて詳しく知りたい場合は、RisolutoLogクラス(risoluto_log.php)を参照してください。

戻る


  1. *1例えば、model()メソッド内の適切な位置にこれらを記述すればOKです
  2. *2出力されない場合は、risoluto.iniのログレベルの指定やログ出力ディレクトリの指定、ならびにログ出力ディレクトリのパーミッションなどを確認してください

SourceForge.JP is a Japanese version of SourceForge.net. For developments that are not related to Japan, we recommend you to use SourceForge.net.