Класс простого лоагра на php

23.05.2017

Из архивов.

Класс позволяет добавлять в лог сообщения, сохранять результат в файл или выводить в виде HTML таблицы.

index.php (Download)

 <?

  require_once('class.logger.php');
  
  echo soLogger::demo();

class.logger.php (Download)

 <?
  /**
  * Класс для логирования
  */
  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) )
	  {
	    ob_start();
	      echo '<pre>';
		    print_r($val);
		  echo '</pre>';
		$val = ob_get_clean();
	  }

      $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');
    }
  }


Пометки: log, logs
Яндекс.Метрика