public function format($event) { $message = new Message(); $message->setFacility($this->facility)->setLevel($event['priority'])->setShortMessage($event['message'])->setFullMessage($event['message']); if (isset($event['extra']['full_message'])) { $message->setFullMessage($event['extra']['full_message']); } if (isset($event['extra']['short'])) { $message->setShortMessage($event['extra']['short']); } if (isset($event['extra']['file'])) { $message->setFile($event['extra']['file']); } if (isset($event['extra']['line'])) { $message->setLine($event['extra']['line']); } if (isset($event['extra']['version'])) { $message->setVersion($event['extra']['version']); } if (isset($event['extra']['facility'])) { $message->setFacility($event['extra']['facility']); } foreach ($event['extra'] as $key => $value) { $message->setAdditional($key, $value); } return $message; }
protected function setValuesToMessage(Message $message) { $message->setFacility('facility'); $message->setFile('foo.php'); $message->setFullMessage('Full Message'); $message->setHost('example.com'); $message->setLevel(3); $message->setLine(42); $message->setShortMessage('Short Message'); $message->setTimestamp(123456789); $message->setVersion('1.2.3'); }
public function testInjectedGelfMessageFormatter() { $record = $this->getRecord(Logger::WARNING, "A test warning message"); $record['extra']['blarg'] = 'yep'; $record['context']['from'] = 'logger'; $expectedMessage = new Message(); $expectedMessage->setLevel(4)->setFacility("test")->setHost("mysystem")->setShortMessage($record['message'])->setTimestamp($record['datetime'])->setAdditional("EXTblarg", 'yep')->setAdditional("CTXfrom", 'logger'); $messagePublisher = $this->getMessagePublisher(); $messagePublisher->expects($this->once())->method('publish')->with($expectedMessage); $handler = $this->getHandler($messagePublisher); $handler->setFormatter(new GelfMessageFormatter('mysystem', 'EXT', 'CTX')); $handler->handle($record); }
/** * {@inheritdoc} */ public function format(array $record) { $record = parent::format($record); if (!isset($record['datetime'], $record['message'], $record['level'])) { throw new \InvalidArgumentException('The record should at least contain datetime, message and level keys, ' . var_export($record, true) . ' given'); } $message = new Message(); $message->setTimestamp($record['datetime'])->setShortMessage((string) $record['message'])->setHost($this->systemName)->setLevel($this->logLevels[$record['level']]); // start count with message length + system name length + 200 for padding / metadata $len = 200 + strlen((string) $record['message']) + strlen($this->systemName); if ($len > self::MAX_LENGTH) { $message->setShortMessage(substr($record['message'], 0, self::MAX_LENGTH - 200)); return $message; } if (isset($record['channel'])) { $message->setFacility($record['channel']); $len += strlen($record['channel']); } if (isset($record['extra']['line'])) { $message->setLine($record['extra']['line']); $len += 10; unset($record['extra']['line']); } if (isset($record['extra']['file'])) { $message->setFile($record['extra']['file']); $len += strlen($record['extra']['file']); unset($record['extra']['file']); } foreach ($record['extra'] as $key => $val) { $val = is_scalar($val) ? $val : $this->toJson($val); $len += strlen($this->extraPrefix . $key . $val); if ($len > self::MAX_LENGTH) { $message->setAdditional($this->extraPrefix . $key, substr($val, 0, self::MAX_LENGTH - $len)); break; } $message->setAdditional($this->extraPrefix . $key, $val); } foreach ($record['context'] as $key => $val) { $val = is_scalar($val) ? $val : $this->toJson($val); $len += strlen($this->contextPrefix . $key . $val); if ($len > self::MAX_LENGTH) { $message->setAdditional($this->contextPrefix . $key, substr($val, 0, self::MAX_LENGTH - $len)); break; } $message->setAdditional($this->contextPrefix . $key, $val); } if (null === $message->getFile() && isset($record['context']['exception']['file'])) { if (preg_match("/^(.+):([0-9]+)\$/", $record['context']['exception']['file'], $matches)) { $message->setFile($matches[1]); $message->setLine($matches[2]); } } return $message; }
/** * * {@inheritdoc} * */ public function format(array $record) { $record = parent::format($record); $message = new Message(); $message->setTimestamp($record['datetime'])->setShortMessage((string) $record['message'])->setFacility($record['channel'])->setHost($this->systemName)->setLine(isset($record['extra']['line']) ? $record['extra']['line'] : null)->setFile(isset($record['extra']['file']) ? $record['extra']['file'] : null)->setLevel($this->logLevels[$record['level']]); // Do not duplicate these values in the additional fields unset($record['extra']['line']); unset($record['extra']['file']); foreach ($record['extra'] as $key => $val) { $message->setAdditional($this->extraPrefix . $key, is_scalar($val) ? $val : $this->toJson($val)); } foreach ($record['context'] as $key => $val) { $message->setAdditional($this->contextPrefix . $key, is_scalar($val) ? $val : $this->toJson($val)); } return $message; }
/** * {@inheritdoc} */ public function report($priority, $message, $extra = []) { $grayLogMessage = new Message(); $grayLogMessage->setShortMessage($message); $grayLogMessage->setFullMessage($extra ? print_r($extra, true) : $message); $grayLogMessage->setHost((Console::isConsole() ? 'Console' : $_SERVER['HTTP_HOST'])); $grayLogMessage->setLevel($priority); $grayLogMessage->setTimestamp(time()); $grayLogMessage->setVersion('1.0'); $this->publisher->publish($grayLogMessage); }
/** * Write a message to the log * * @param array $event log data event * @return void */ protected function doWrite(array $event) { $fullMessage = $this->hasFormatter() ? $this->getFormatter()->format($event) : $event['message']; $message = new Message(); $message->setFacility($this->getFacility()); $message->setShortMessage($event['message']); $message->setFullMessage($fullMessage); $message->setLevel($event['priority']); $this->getPublisher()->publish($message); }
/** * Write a message to the log * * @param array $event log data event * @return void */ protected function doWrite(array $event) { if ($this->hasFormatter()) { $event = $this->getFormatter()->format($event); } $message = new Message(); $message->setFacility('application'); $message->setShortMessage($event['message']); $message->setFullMessage($event); $message->setLevel($event['priority']); $this->getPublisher()->publish($message); }
protected function write($level, $shortMessage, Request $request = null, $exception = null, $facility = null, $timestamp = null, $fullMessage = null) { $message = new Message(); $message->setHost($this->app['host'])->setAdditional('app_machine', $this->app['machine'])->setAdditional('app_version', $this->app['version'])->setLevel($level)->setShortMessage($shortMessage)->setTimestamp(is_null($timestamp) ? time() : $timestamp); if (!is_null($request)) { $message->setAdditional('request_url', $request->url())->setAdditional('request_method', $request->method())->setAdditional('request_ip', $request->ip()); if (config('graylog2.log.inputs.do')) { $message->setAdditional('request_inputs', json_encode($request->except(config('graylog2.log.inputs.except')))); } } if (!is_null($exception)) { $message->setFullMessage($exception->getMessage())->setFile($exception->getFile())->setLine($exception->getLine())->setAdditional('exception_code', $exception->getCode())->setAdditional('exception_trace', $exception->getTraceAsString()); } if (!is_null($fullMessage)) { $message->setFullMessage($fullMessage); } if (!is_null($facility)) { $message->setFacility($facility); } $this->lastMessage = $message; switch (config('graylog2.log.type')) { case 'graylog2': $this->publisher->publish($message); break; case 'file': $file = 'logs' . DIRECTORY_SEPARATOR . 'graylog2.log'; $message = $message->toArray(); $log = []; $log[] = "\n"; $log[] = '[' . date('Y-m-d H:i:s', $message['timestamp']) . ']'; $log[] = strtoupper($level) . ' in ' . $message['file'] . ' at L' . $message['line'] . ':'; $log[] = isset($message['facility']) ? "\n" . 'COMPONENT: ' . $message['facility'] : ''; $log[] = "\r\n" . 'SHORT_MESSAGE: ' . $message['short_message']; $log[] = isset($message['full_message']) ? "\n" . 'FULL_MESSAGE: ' . $message['full_message'] : ''; $log[] = isset($message['_exception_trace']) ? "\n" . 'STRACKTRACE: ' . "\n" . $message['_exception_trace'] : ''; $log = implode(" ", $log); if (!\Storage::disk('local')->exists($file)) { \Storage::disk('local')->put($file, trim($log)); } else { \Storage::disk('local')->append($file, $log); } break; } }
public function testToArrayV11() { $this->message->setVersion("1.1"); $this->message->setShortMessage("lorem ipsum"); $this->message->setAdditional("foo", "bar"); // check that deperacted behaviour is overridden in 1.1 $this->message->setLine(50); $this->message->setAdditional("line", 100); $this->message->setFile("foo/bar"); $data = $this->message->toArray(); $this->assertSame('1.1', $data['version']); $this->assertSame('lorem ipsum', $data['short_message']); $this->assertArrayHasKey('_line', $data); $this->assertSame(100, $data['_line']); $this->assertArrayNotHasKey('line', $data); $this->assertArrayHasKey('_file', $data); $this->assertSame('foo/bar', $data['_file']); $this->assertArrayNotHasKey('file', $data); $this->assertArrayHasKey('_foo', $data); $this->assertSame('bar', $data['_foo']); }
public function __construct() { parent::__construct(); $this->version = '1.1'; }
/** * Initializes Exceptiondata with given message * * @param Message $message * @param Exception $e */ protected function initExceptionData(Message $message, Exception $e) { $message->setLine($e->getLine()); $message->setFile($e->getFile()); $longText = ""; do { $longText .= sprintf("%s: %s (%d)\n\n%s\n", get_class($e), $e->getMessage(), $e->getCode(), $e->getTraceAsString()); $e = $e->getPrevious(); } while ($e && ($longText .= "\n--\n\n")); $message->setFullMessage($longText); }
/** * Processes log messages and sends them to specific destination. * Derived child classes must implement this method. * @param array $logs list of messages. Each array element represents one message * with the following structure: * array( * [0] => message (string) * [1] => level (string) * [2] => category (string) * [3] => timestamp (float, obtained by microtime(true)); */ protected function processLogs($logs) { $publisher = new Gelf\Publisher($this->transport); foreach ($logs as $logItem) { list($message, $level, $category, $timestamp) = $logItem; $gelfMessage = new Gelf\Message(); if (is_string($message)) { $gelfMessage->setShortMessage($message); } elseif (!is_array($message)) { $gelfMessage->setShortMessage(var_export($message, true)); } else { if (isset($message['message'])) { $gelfMessage->setShortMessage($message['message']); unset($message['message']); foreach ($message as $key => $val) { if (is_string($key)) { $gelfMessage->setAdditional($key, is_string($val) ? $val : var_export($val, true)); } } } else { $gelfMessage->setShortMessage(var_export($message, true)); } } $gelfMessage->setLevel(($_ =& $this->_levels[$level]) ?: LogLevel::INFO)->setTimestamp($timestamp)->setFacility($category)->setAdditional('level_name', strtolower($level)); foreach ($this->extra as $key => $val) { if (is_string($key)) { $gelfMessage->setAdditional($key, is_string($val) ? $val : var_export($val, true)); } } if (isset($logItem[4]) && is_array($logItem[4])) { $traces = []; foreach ($logItem[4] as $index => $trace) { $traces[] = "{$trace['file']}:{$trace['line']}"; if (0 === $index) { $gelfMessage->setFile($trace['file']); $gelfMessage->setLine($trace['line']); } } $gelfMessage->setAdditional('trace', implode("\n", $traces)); } // Publishing message $publisher->publish($gelfMessage); } }
/** * @param Message $message * * @return bool */ public function publish(Message $message) { $message->setHost($this->fromName); return parent::publish($message); }
/** * @access protected * @param LogRecord * @return void */ protected function processRecord(\Naucon\Logger\LogRecord $logRecord) { $message = new Message(); $message->setLevel($logRecord->getLevel()); $message->setShortMessage($logRecord->getMessage()); $message->setHost($this->getHost()); $message->setFacility($this->getFacility()); if (method_exists($logRecord, 'getCreated()')) { $message->setTimestamp($logRecord->getCreated()); } else { $message->setTimestamp(time(true)); } $context = $logRecord->getContext(); if (isset($context['exception']) && $context['exception'] instanceof \Exception) { /** * @var \Exception $exception */ $exception = $context['exception']; $message->setFullMessage($exception->getTraceAsString()); $message->setFile($exception->getFile()); $message->setLine($exception->getLine()); } // $message->setAdditional("Additional Field 1", "bla bla"); // $message->setAdditional("Additional Field 2", "lirum larum"); $this->getPublisher()->publish($message); }
/** * {@inheritdoc} */ public function format(array $record) { $record = parent::format($record); if (!isset($record['datetime'], $record['message'], $record['level'])) { throw new \InvalidArgumentException('The record should at least contain datetime, message and level keys, ' . var_export($record, true) . ' given'); } $message = new Message(); $message->setTimestamp($record['datetime'])->setShortMessage((string) $record['message'])->setHost($this->systemName)->setLevel($this->logLevels[$record['level']]); if (isset($record['channel'])) { $message->setFacility($record['channel']); } if (isset($record['extra']['line'])) { $message->setLine($record['extra']['line']); unset($record['extra']['line']); } if (isset($record['extra']['file'])) { $message->setFile($record['extra']['file']); unset($record['extra']['file']); } foreach ($record['extra'] as $key => $val) { $message->setAdditional($this->extraPrefix . $key, is_scalar($val) ? $val : $this->toJson($val)); } foreach ($record['context'] as $key => $val) { $message->setAdditional($this->contextPrefix . $key, is_scalar($val) ? $val : $this->toJson($val)); } if (null === $message->getFile() && isset($record['context']['exception']['file'])) { if (preg_match("/^(.+):([0-9]+)\$/", $record['context']['exception']['file'], $matches)) { $message->setFile($matches[1]); $message->setLine($matches[2]); } } return $message; }
/** * @param array $event * * @return Message */ public function format($event) { $message = new Message(); $message->setHost(gethostname()); if (isset($event['priority'])) { $message->setLevel($event['priority']); } else { if (isset($event['errno'])) { // @todo Convert to syslog error levels? $message->setLevel($event['errno']); } } $message->setFullMessage($event['message']); $message->setShortMessage($event['message']); if (isset($event['full'])) { $message->setFullMessage($event['full']); } if (isset($event['short'])) { $message->setShortMessage($event['short']); } if (isset($event['file'])) { $message->setFile($event['file']); } if (isset($event['line'])) { $message->setLine($event['line']); } if (isset($event['version'])) { $message->setVersion($event['version']); } if (isset($event['facility'])) { $message->setFacility($event['facility']); } else { $message->setFacility($this->_sFacility); } if (isset($event['extra']) && isset($event['extra']['trace'])) { $aTraceOut = []; foreach ($event['extra']['trace'] as $aTrace) { if (isset($aTrace['file']) && isset($aTrace['line'])) { $aTraceOut[] = sprintf('file: %s | line: %s', $aTrace['file'], $aTrace['line']); } elseif (isset($aTrace['function']) && isset($aTrace['class']) && isset($aTrace['type'])) { $aTraceOut[] = sprintf('%s %s %s', $aTrace['class'], $aTrace['type'], $aTrace['function']); } } $message->setAdditional('trace', implode(PHP_EOL, $aTraceOut)); } if ($this->_sLogname != '') { $message->setAdditional('logname', $this->_sLogname); } if (isset($event['timestamp'])) { if ($event['timestamp'] instanceof \DateTime) { $message->setTimestamp($event['timestamp']->getTimestamp()); } else { $message->setTimestamp($event['timestamp']); } } $aBlackKeys = ['message', 'priority', 'errno', 'full', 'short', 'file', 'line', 'version', 'facility', 'timestamp']; foreach ($event as $mKey => $mValue) { if (!in_array($mKey, $aBlackKeys)) { if (is_array($mValue)) { $rows = []; foreach ($mValue as $mKey2 => $mValue2) { if (is_array($mValue2)) { continue; } $rows[] = sprintf('%s: %s', $mKey2, $mValue2); } $mValue = implode(' | ', $rows); } $message->setAdditional($mKey, $mValue); } } return $message; }