2012/05/24

コアクラスの拡張 ~Logクラス


・本体からコピって自分とこのappに置く(拡張prefix付ける MY_とか)
  system/libraries/Log.php → application/core/MY_Log.php
・なんでLogクラスってコアのくせにlibrariesにあるわけ?
  →とか思いながら、リファレンス通りにapplication/core/配下においても動かねーし。
  →やっぱり、
  system/core/→application/core/
  system/libraries/→application/libraries/
  で、いいらしい。
・ログファイル名もconfig/config.phpで設定できるようにしたい
  →config/config.phpに $config['log_file_name'] = 'app.example.log';追加
  →MY_Log::__construct()処理追加
public function __construct()
{
  parent::__construct();
  $this->_log_file_name = date('Y-m-d').EXT;←CIデフォルト
  $config =& get_config();
  if ($config['log_file_name'] != '')
  {
    $this->_log_file_name = $config['log_file_name'];
  }
}
・ログのレコードフォーマットが気にくわないから変える
  →MY_Log::write_log()編集
public function write_log($level = 'error', $msg, $php_error = FALSE)
{
  if ($this->_enabled === FALSE)
  {
    return FALSE;
  }
  $level = strtoupper($level);
  if ( ! isset($this->_levels[$level]) OR ($this->_levels[$level] > $this->_threshold))
  {
    return FALSE;
  }
  $filepath = $this->_log_path.$this->_log_file_name;
  $message = '';
  if ( ! $fp = @fopen($filepath, FOPEN_WRITE_CREATE))
  {
    return FALSE;
  }
  $message .= date($this->_date_fmt).' ('.$level.') '.$msg."\n";
  flock($fp, LOCK_EX);
  fwrite($fp, $message);
  flock($fp, LOCK_UN);
  fclose($fp);
  @chmod($filepath, FILE_WRITE_MODE);
  return TRUE;
}
参考)
コアシステムクラスの作成 : CodeIgniter ユーザガイド 日本語版
ヌル日記




0 件のコメント: