Класс для логирования

03.06.2016

Довольно старый и требующий реворка php класс для логирования.

Основные возможности:

  1. Можно "логировать" сообщения, массивы и объекты
  2. Есть возможность записи лога в файл

 
<?
  /**
  * Класс для логирования
  */
  class soLogger
  {
    /**
     * Массив всех сообщений
     *
     * @var    aItems
     */
    protected $_aItems = array();

    /**
    * Добавляет новое сообщение к списку
    * 
    * @param mixed $val
    * @param string $sTitle
    * 
    * @return object $this
    */
    public function add($val, $sTitle = '')
    {
      if ( is_object($val) || is_array($val) )
      {
        $val = '<pre>' . print_r($val, TRUE) . '</pre>';
      }

      $o = new stdClass();
      $o->title = $sTitle;
      $o->text = $val;
      $this->_aItems[] = $o;
      
      return $this;
    }

    /**
    * Возвращает все сообщения в виде таблицы
    * 
    * @return string
    */
    public function show()
    {
      $sRet  = '
<div style="clear: both;"></div>
<br/>
<table cellpadding="0" cellspacing="0" border="1" width="auto">
	<tr>
		<td colspan="3"><b>Debug:</b></td><td>
';

      $i = 1;
      foreach($this->_aItems as $oItem)
      {
        $sRet .= '<tr><td>' . $i . '</td><td>'.$oItem->title.'</td><td>'.$oItem->text.'</td></tr>';
        $i++;
      }

      $sRet .= '</table>';
      return $sRet;
    }
    
    /**
    * Сохраняет все сообщения в файл.
    * 
    * @param string $sOutputFileName
    * 
    * @return object $this
    */
    public function flush2file($sOutputFileName)
    {
      if( file_put_contents($sOutputFileName, $this->show()) === FALSE)
	  {
	    die('Permission denied! File: <b>'.$sOutputFileName.'</b>');
	  }

      return $this;
    }

    /**
    * Демонстрация работы
    * 
    * @return void
    */
    public static function demo()
    {
      $oLogger = new soLogger();
      $oLogger->add('Error!');
      $oLogger->add('Error!', 'Title');
      
      $oLogger->add( array('11', 'zz' => 34, 'Text' ), 'Title2');
      
      $o = new stdClass();
      $o->ok = '12';
      $o->text = 'text';
      $oLogger->add($o);
      
      echo $oLogger->show();
      $oLogger->flush2file( __DIR__.'/out.log');
    }
  }


Яндекс.Метрика