diff --git a/src/Monolog/Formatter/LogstashFormatter.php b/src/Monolog/Formatter/LogstashFormatter.php index b084c4a5..7a7b3b3c 100644 --- a/src/Monolog/Formatter/LogstashFormatter.php +++ b/src/Monolog/Formatter/LogstashFormatter.php @@ -85,33 +85,42 @@ class LogstashFormatter extends NormalizerFormatter protected function formatV0(array $record) { + if (empty($record['datetime'])) { + $record['datetime'] = gmdate('c'); + } $message = array( '@timestamp' => $record['datetime'], - '@message' => $record['message'], - '@tags' => array($record['channel']), '@source' => $this->systemName, - '@fields' => array( - 'channel' => $record['channel'], - 'level' => $record['level'] - ) + '@fields' => array() ); - + if (isset($record['message'])) { + $message['@message'] = $record['message']; + } + if (isset($record['channel'])) { + $message['@tags'] = array($record['channel']); + $message['@fields']['channel'] = $record['channel']; + } + if (isset($record['level'])) { + $message['@fields']['level'] = $record['level']; + } if ($this->applicationName) { $message['@type'] = $this->applicationName; } - if (isset($record['extra']['server'])) { $message['@source_host'] = $record['extra']['server']; } if (isset($record['extra']['url'])) { $message['@source_path'] = $record['extra']['url']; } - foreach ($record['extra'] as $key => $val) { - $message['@fields'][$this->extraPrefix . $key] = $val; + if (!empty($record['extra'])) { + foreach ($record['extra'] as $key => $val) { + $message['@fields'][$this->extraPrefix . $key] = $val; + } } - - foreach ($record['context'] as $key => $val) { - $message['@fields'][$this->contextPrefix . $key] = $val; + if (!empty($record['context'])) { + foreach ($record['context'] as $key => $val) { + $message['@fields'][$this->contextPrefix . $key] = $val; + } } return $message; @@ -119,26 +128,36 @@ class LogstashFormatter extends NormalizerFormatter protected function formatV1(array $record) { + if (empty($record['datetime'])) { + $record['datetime'] = gmdate('c'); + } $message = array( '@timestamp' => $record['datetime'], '@version' => 1, - 'message' => $record['message'], 'host' => $this->systemName, - 'type' => $record['channel'], - 'channel' => $record['channel'], - 'level' => $record['level_name'] ); - + if (isset($record['message'])) { + $message['message'] = $record['message']; + } + if (isset($record['channel'])) { + $message['type'] = $record['channel']; + $message['channel'] = $record['channel']; + } + if (isset($record['level_name'])) { + $message['level'] = $record['level_name']; + } if ($this->applicationName) { $message['type'] = $this->applicationName; } - - foreach ($record['extra'] as $key => $val) { - $message[$this->extraPrefix . $key] = $val; + if (!empty($record['extra'])) { + foreach ($record['extra'] as $key => $val) { + $message[$this->extraPrefix . $key] = $val; + } } - - foreach ($record['context'] as $key => $val) { - $message[$this->contextPrefix . $key] = $val; + if (!empty($record['context'])) { + foreach ($record['context'] as $key => $val) { + $message[$this->contextPrefix . $key] = $val; + } } return $message;