Browse Source

convert exceptions to string before saving log messages

fixes #7305
tags/2.0.6
Carsten Brandt 9 years ago
parent
commit
dd1995551c
  1. 1
      framework/CHANGELOG.md
  2. 7
      framework/log/SyslogTarget.php
  3. 8
      framework/log/Target.php

1
framework/CHANGELOG.md

@ -4,6 +4,7 @@ Yii Framework 2 Change Log
2.0.5 under development
-----------------------
- Bug #7305: Logging of Exception objects resulted in failure of the logger i.e. no logs being written (cebe)
- Bug #7707: client-side `trim` validator now passes the trimmed value to subsequent validators (nkovacs)
- Bug #8322: `yii\behaviors\TimestampBehavior::touch()` now throws an exception if owner is new record (klimov-paul)
- Enh #8070: `yii\console\controllers\MessageController` now sorts created messages, even if there is no new one, while saving to PHP file (klimov-paul)

7
framework/log/SyslogTarget.php

@ -60,7 +60,12 @@ class SyslogTarget extends Target
list($text, $level, $category, $timestamp) = $message;
$level = Logger::getLevelName($level);
if (!is_string($text)) {
$text = VarDumper::export($text);
// exceptions may not be serializable if in the call stack somewhere is a Closure
if ($text instanceof \Exception) {
$text = (string) $text;
} else {
$text = VarDumper::export($text);
}
}
$prefix = $this->getMessagePrefix($message);

8
framework/log/Target.php

@ -9,6 +9,7 @@ namespace yii\log;
use Yii;
use yii\base\Component;
use yii\base\ErrorHandler;
use yii\base\InvalidConfigException;
use yii\helpers\VarDumper;
use yii\web\Request;
@ -238,7 +239,12 @@ abstract class Target extends Component
list($text, $level, $category, $timestamp) = $message;
$level = Logger::getLevelName($level);
if (!is_string($text)) {
$text = VarDumper::export($text);
// exceptions may not be serializable if in the call stack somewhere is a Closure
if ($text instanceof \Exception) {
$text = (string) $text;
} else {
$text = VarDumper::export($text);
}
}
$traces = [];
if (isset($message[4])) {

Loading…
Cancel
Save