/** * 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); }
/** * {@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); }
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'); }
/** * 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); }
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); }
/** * 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); } }
/** * Initializes message-object * * @param mixed $level * @param mixed $rawMessage * @param array $context * @return Message */ protected function initMessage($level, $message, $context) { // assert that message is a string, and interpolate placeholders $message = (string) $message; $message = self::interpolate($message, $context); // create message object $messageObj = new Message(); $messageObj->setLevel($level); $messageObj->setShortMessage($message); $messageObj->setFacility($this->facility); foreach ($context as $key => $value) { $messageObj->setAdditional($key, $value); } return $messageObj; }
/** * @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); }
/** * @expectedException RuntimeException */ public function testLevelInvalidInteger() { $this->message->setLevel(8); }
/** * @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; }