Журнал ошибок настройки для Kohana - PullRequest
1 голос
/ 16 декабря 2011

У меня есть класс исключения:

class MartbooksException extends Exception 
{
    public function __construct($msg)
    {
        parent::__construct($msg, 0, null);
        echo $msg;
        Kohana::$log->add(Log::ERROR, $msg);
    }
}

Кохана :: $ log-> add (Log :: ERROR, $ msg);

Это всеЯ должен сделать, чтобы писать журналы в файлах приложений / журналов?

Это хорошее решение?

Ответы [ 2 ]

4 голосов
/ 16 декабря 2011

Чтобы следовать стилю Kohana, я бы порекомендовал вам использовать:

Class Martbooks_Exception Extends Kohana_Exception

в качестве объявления и поместите файл с именем exception.php в classes/martbooks. Это следует стилю Kohana.

Расширение Kohana_Exception вместо Exception позволяет использовать подстановку переменных вдоль строк

throw new Martbooks_Exception ('this is a :v', array (':v' => 'variable', ));

Что касается определения __construct() -метода, то часть echo $msg; не будет my предпочтительным способом решения ошибок, любой вывод должен быть выполнен в блоке, который перехватывает исключение. То же самое можно утверждать и в случае вызова Kohana::$log->add(), но если вы хотите регистрировать каждый Martbooks_Exception, ваше решение вполне допустимо. В этом случае я бы переписал ваш код:

Class Martbooks_Exception Extends Kohana_Exception
{
   public function __construct($message, array $variables = NULL, $code = 0)
   {
     parent::__construct ($message, $variables, $code);
     Kohana::$log->add (Log::ERROR, __ ($message, $variables));
   }
}

с определением __construct(), которое соответствует Kohana_Exception '__construct().

Единственное возражение против ведения журнала с уровнем Log::ERROR в конструкторе заключается в том, что предполагается, что каждое исключение является ошибкой уровня приложения, что может быть справедливо для некоторых типов исключений, но также может использоваться для сигнализации другие значения. Точное значение исключения следует оставить в блоке обработки исключений.

1 голос
/ 16 декабря 2011

Чтобы добавить сообщение журнала, все, что вам нужно, это действительно одна строка; Kohana::$log->add($level, $message[, $values]) см. API

Кроме того, я не думаю, что это правильное решение. Вам лучше создать свой собственный обработчик исключений, как вы можете видеть на этой странице руководства пользователя

...