/**
* Stores log messages to sentry.
*/
public function export()
{
foreach ($this->messages as $message) {
list($msg, $level, $catagory, $timestamp, $traces) = $message;
$errStr = '';
$options = ['level' => \yii\log\Logger::getLevelName($level), 'extra' => []];
$templateData = null;
if (is_array($msg)) {
$errStr = isset($msg['msg']) ? $msg['msg'] : '';
if (isset($msg['data'])) {
$options['extra'] = $msg['data'];
}
} elseif (is_a($msg, \yii\base\Exception::class)) {
$errStr = $msg->getMessage();
$traces = $msg->getTrace();
} else {
$errStr = $msg;
}
// Store debug trace in extra data
$traces = array_map(function ($v) {
$file = isset($v['file']) ? $v['file'] : 'unknown file';
$line = isset($v['line']) ? $v['line'] : 'unknown line';
$class = isset($v['class']) ? $v['class'] : 'unknown class';
$function = isset($v['function']) ? $v['function'] : 'unknown function';
return $file . PHP_EOL . "{$class}::{$function} [{$line}]";
}, $traces);
if (!empty($traces)) {
$options['extra']['traces'] = $traces;
}
$this->client->captureMessage($errStr, [], $options, false);
}
}