/** * @param Event $event * @param Client $client * @return int * @throws ClientException * @deprecated Events are logged by syrup logger */ public static function create(Event $event, Client $client) { try { return $client->createEvent($event); } catch (ClientException $e) { if ($e->getStringCode() === self::STATUS_CODE_REQUEST_TOO_LARGE) { $newEvent = clone $event; $newEvent->setResults(array('Message' => 'Large result was stripped due maximum allowed size for event.')); return $client->createEvent($newEvent); } else { throw $e; } } }
protected function sendEventToSapi($type, $message, $componentName) { $sapiEvent = new SapiEvent(); $sapiEvent->setComponent($componentName); $sapiEvent->setMessage($message); $sapiEvent->setRunId($this->storageApi->getRunId()); $sapiEvent->setType($type); $this->storageApi->createEvent($sapiEvent); }
/** * @param $message * @param array $data * @param int $duration * @param bool $error * @throws \Keboola\StorageApi\Exception * @throws \Zend_Log_Exception */ public function log($message, $data = array(), $duration = 0, $error = false) { $params = array_merge($data, array('row' => $this->currentConfigRowNumber)); $logger = Registry::getInstance("log"); if ($error) { $logger->error($message, $data); } else { $logger->info($message, $data); } $event = new \Keboola\StorageApi\Event(); $event->setComponent($this->componentName)->setConfigurationId($this->configurationId)->setRunId($this->runId)->setType($error ? 'error' : 'info')->setDuration($duration)->setMessage($message)->setParams($params); $this->storageApi->createEvent($event); }
public function handle(array $record) { $this->initStorageApiClient(); if (!$this->storageApiClient || $record['level'] == Logger::DEBUG) { return false; } $event = new Event(); if (!empty($record['component'])) { $event->setComponent($record['component']); } else { $event->setComponent($this->appName); } $event->setMessage(\Keboola\Utils\sanitizeUtf8($record['message'])); $event->setRunId($this->storageApiClient->getRunId()); $params = []; if (isset($record['http'])) { $params['http'] = $record['http']; } $event->setParams($params); $results = []; if (isset($record['context']['exceptionId'])) { $results['exceptionId'] = $record['context']['exceptionId']; } if (isset($record['context']['job'])) { $results['job'] = $record['context']['job']; } $event->setResults($results); switch ($record['level']) { case Logger::ERROR: $type = Event::TYPE_ERROR; break; case Logger::CRITICAL: case Logger::EMERGENCY: case Logger::ALERT: $type = Event::TYPE_ERROR; $event->setMessage("Application error"); $event->setDescription("Contact support@keboola.com"); break; case Logger::WARNING: case Logger::NOTICE: $type = Event::TYPE_WARN; break; case Logger::INFO: default: $type = Event::TYPE_INFO; break; } $event->setType($type); $this->storageApiClient->createEvent($event); return false; }
public function testLargeEvents() { $client = new StorageApiClient(array('token' => TEST_ORCHESTRATOR_SAPI_TOKEN, 'url' => TEST_ORCHESTRATOR_SAPI_URL)); $testLimit = 300 * 1024; $testMessage = 'This is sample text for large evenet testing.'; $event = new Event(); $event->setComponent(KeboolaOrchestratorBundle::SYRUP_COMPONENT_NAME)->setMessage('Test - Large Event')->setResults(array('Message' => str_repeat($testMessage, (int) ($testLimit / mb_strlen($testMessage))))); $sizeError = false; try { $client->createEvent($event); } catch (ClientException $e) { $this->assertEquals(EventLogger::STATUS_CODE_REQUEST_TOO_LARGE, $e->getStringCode()); $sizeError = true; $eventId = EventLogger::create($event, $client); $this->assertNotEmpty($eventId); } $this->assertTrue($sizeError); }