Yii2:如何记录异常?

时间:2015-02-12 12:09:56

标签: exception logging exception-handling yii2 error-logging

如果我记录异常会怎么样?例如:

Yii::error(new Exception('test'));

目前我的基本应用程序模板没有任何反应。没有记录任何内容(进一步的error()调用也不记录)。它是否正确?配置是:

'log'          => [
  'traceLevel' => YII_DEBUG ? 3 : 0,
  'targets'    => [
    [
      'class'  => 'yii\log\FileTarget',
      'levels' => ['error', 'warning'],
    ],
  ],
],

我原本以为异常会被适当记录。我应该如何记录异常,尤其是如果我想看到痕迹?

更新

请参阅GitHub上的Issue。使用Yii 2.0.6可以记录异常。

如果您捕获异常并抛出另一个异常,这可能很有用。然后您可以记录原始问题。但是,如果您抛出基于Yii异常的异常,您通常(或始终?)将原始异常附加为$previous。如果不能在任何地方捕获,则会自动记录前一个例外。

2 个答案:

答案 0 :(得分:5)

我相信,你的配置是正确的。

但是,您不需要Yii::error()覆盖您的例外情况。记录错误有两种基本方法:

1)只是抛出任何异常:

throw new \Exception("My error message #1");

2)使用Yii::error()

Yii::error("My error message #2");

不同之处在于,您将悄悄地将第二条消息放入日志而不会停止您的应用程序。

答案 1 :(得分:0)

要在捕获异常后完整记录异常,您可以在 catch 块中写入此内容

Yii::$app->errorHandler->logException($e);

您可以阅读 yii2 here

中的错误处理