php - 设置Kohana的错误记录

标签 php error-handling kohana kohana-3

我有异常类:

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

Kohana::$log->add(Log::ERROR, $msg);



我要在应用程序/日志文件中写入日志吗?

这是好的解决方案吗?

最佳答案

要遵循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;部分不是解决错误处理的首选方法,任何回显都应在捕获异常的块中进行。在调用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级别进行日志记录的唯一异议是,它假定每个异常都是应用程序级错误,某些异常类型可能确实如此,但也可以用于表示其他含义。异常的确切含义应留给异常处理块。

关于php - 设置Kohana的错误记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8531363/

相关文章:

php - 在使用 Kohana 包装器的 Swift 邮件程序方面需要帮助

css - kohana 框架 3.1.2 如何通过 Nested Sets 制作菜单

php - 命名空间或其他东西,以避免与 Kohana 的图像库发生名称冲突

php - 双语网站CMS结构——mysql、php数组、 session 、效率?

php - 执行测试的百分比

php - MySQL基于PHP数组的最低值更新

php - Codeigniter falshdata 中是否有最大长度?

PHP MYSQL 插入不起作用并且没有收到错误

python - 如何添加到导航pinax(0.9a2)的链接?

javascript - 我无法通过AJAX调用捕获特定浏览器记录的错误。捕获这些可能吗?