Стандартное логирование в symfony

Symfony framework

Автор: Александр Степанов

5 февр. 2013 г., 09:51:49  1961


Во время разработки иногда необходимо отлаживать приложение. Обычные средства типо print_r или var_dump могу быть недоступны, если приложение имеет большой функционал и т.п. В симфони с версии 1 есть страндартные способы логирования: В контроллере:

$this->logMessage($level, $message);
$this->logMessage('err', 'Onoes something went wrong');

 

В шаблоне:

use_helper('Debug')

log_message($message, $level)

log_message('Ohnoes something went wrong', 'err') 

 

В любой другой части приложения:

sfContext::getInstance()->getLogger()->err($message); 
sfContext::getInstance()->getLogger()->err('Ohnoes something went wrong');

Так же можно создать свой обработчик для модели:

class MyCustom_Api_Log
{
  /**
   * Wrapper method for getting a symfony logger object
   *
   * @return object
   */
  public static function getLogger()
  {
    return sfContext::getInstance()->getLogger();
  }
 
  /**
   * Wrapper method for logging debug message
   *
   * @param string $message
   */
  public static function logDebug($message)
  {
    self::getLogger()->debug($message);
  }
 
  /**
   * Wrapper method for logging an error
   *
   * @param string $message
   */
  public static function logError($message)
  {
    self::getLogger()->err($message);
  }
 
}
 
// Example Usage
 
MyCustom_Api_Log::logError('Ohnoes something went wrong');

Теперь можно обрабатывать ошибки без вызова апи симфони и ошибки будут логироваться в общий лог приложения.