/**
  * @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;
         }
     }
 }
Example #2
0
 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);
 }
Example #4
0
 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);
 }