Yii2:如何记录异常?

rob*_*sch 5 logging error-logging exception-handling exception yii2

如果我记录异常,应该怎么办?例:

Yii::error(new Exception('test'));
Run Code Online (Sandbox Code Playgroud)

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

'log'          => [
  'traceLevel' => YII_DEBUG ? 3 : 0,
  'targets'    => [
    [
      'class'  => 'yii\log\FileTarget',
      'levels' => ['error', 'warning'],
    ],
  ],
],
Run Code Online (Sandbox Code Playgroud)

我曾期望异常会被适当地记录。我应该如何记录异常,特别是。如果我想看看痕迹?

更新:

参见问题在GitHub上。使用Yii 2.0.6可以记录异常。

如果捕获异常并引发另一个异常,这可能会很有用。然后,您可以记录原始问题。但是,如果引发基于Yii异常的异常,则可以经常(或始终?)将原始异常附加为$previous。如果未在任何地方捕获到此类异常,则会自动将其与上一个异常一起记录。

Pav*_*iev 5

我相信您的配置是正确的。

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

1)抛出任何异常:

throw new \Exception("My error message #1");
Run Code Online (Sandbox Code Playgroud)

2)使用Yii::error()

Yii::error("My error message #2");
Run Code Online (Sandbox Code Playgroud)

不同之处在于您将在不停止应用程序的情况下将第二条消息悄悄地记录到日志中。