diff --git a/GraylogTarget.php b/GraylogTarget.php index 1e2d954..d8cd6a9 100644 --- a/GraylogTarget.php +++ b/GraylogTarget.php @@ -31,6 +31,8 @@ class GraylogTarget extends Target public $addFile = true; + public $addFileTrace = true; + private $_levels = [ Logger::LEVEL_TRACE => LogLevel::DEBUG, Logger::LEVEL_PROFILE_BEGIN => LogLevel::DEBUG, @@ -106,16 +108,33 @@ private function parseYiiMessageBase(array $yiiMessage) $timeStamp = $yiiMessage[3]; $level = ArrayHelper::getValue($this->_levels, $yiiMessage[1], LogLevel::INFO); $category = $yiiMessage[2]; + $file = null; if (isset($yiiMessage[4][0]['file'])) { - $file = $yiiMessage[4][0]['file'] . ($yiiMessage[4][0]['line'] ? ' [' . $yiiMessage[4][0]['line'] . ']' : ''); - } else { - $file = null; + if ($this->addFileTrace) { + $file = implode(PHP_EOL, $this->getFileTraceHierarchy($yiiMessage[4])); + } else { + $file = $this->formatFileLine($yiiMessage[4][0]); + } } + return [$timeStamp, $level, $category, $file]; + } + private function getFileTraceHierarchy(array $lines) + { + $trace = []; + foreach ($lines as $line) { + if (isset($line['file'])) { + $trace[] = $this->formatFileLine($line); + } + } + return $trace; + } - return [$timeStamp, $level, $category, $file]; + private function formatFileLine($line) + { + return $line['file'] . ($line['line'] ? ' [' . $line['line'] . ']' : ''); } private function parseYiiMessageExt(array $yiiMessage) @@ -129,5 +148,4 @@ private function parseYiiMessageExt(array $yiiMessage) } return [$shortMessage, $fullMessage]; } - -} \ No newline at end of file +} diff --git a/README.md b/README.md index efc99d0..6c409c7 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,7 @@ return [ 'addUserId' => true, 'addLoggerId' => true, 'addFile' => true, + 'addFileTrace' => true, ], ], ],