/** * @param array $eventsToSkip * or [logType => *] or [logType1 => [event1, event2, ...], logType2 => ...] */ public function addEventsToSkip($eventsToSkip) { if ($eventsToSkip === '*') { $this->eventsToSkip = $eventsToSkip; } elseif (is_array($eventsToSkip)) { foreach ($eventsToSkip as $type => $events) { if (!Validators::is($type, 'unicode:1..')) { $this->logger->addWarning(sprintf('The keys of array $eventsToSkip must be non-empty strings. "%s" given', gettype($type))); continue; } if ($events === '*') { $this->eventsToSkip[$type] = $events; } elseif (is_array($events)) { foreach ($events as $event) { if (Validators::is($event, 'unicode:1..')) { $this->eventsToSkip[$type][$event] = $event; } else { $this->logger->addWarning(sprintf('The values of array $eventsToSkip[%s] must be non-empty string. "%s" given', $type, gettype($event))); } } } else { $this->logger->addWarning(sprintf('The values of array $eventsToSkip must be an ARRAY or * (a star). "%s" given', gettype($events))); } } } else { $this->logger->addWarning(sprintf('Argument $eventsToSkip must be an ARRAY or * (a star). "%s" given', gettype($eventsToSkip))); } }
public function process(AMQPMessage $message) : int { try { if (!($request = Json::decode($message->body, Json::FORCE_ARRAY))) { return self::MSG_REJECT; } } catch (JsonException $e) { $this->logger->addError($e->getMessage()); return self::MSG_REJECT; } $orderId = $request['orderId']; try { $conn = $this->em->getConnection(); if ($conn->ping() === false) { $conn->close(); $conn->connect(); } /** @var Order $order */ $orders = $this->em->getRepository(Order::class); if (!($order = $orders->find($orderId))) { $this->logger->addWarning(sprintf('Order %s not found in db', $orderId)); return self::MSG_REJECT; } if (!$order->getUser()) { $this->logger->addWarning(sprintf('Order %s has no user', $orderId)); return self::MSG_REJECT; } $this->user->passwordLessLogin($order->getUser()->getId()); return $this->processOrder($order, $request['options']); } catch (\App\Exception\DatabaseDeadlockException $e) { return $this->restartJob($request, $e); } catch (\Doctrine\DBAL\Exception\DriverException $e) { if ($deadlock = \App\Exception\DatabaseDeadlockException::fromDriverException($e)) { $e = $deadlock; $message = null; } else { $this->logger->addError($e->getMessage(), ['exception' => $e]); $message = $e->getPrevious() instanceof \Doctrine\DBAL\Driver\PDOException ? $e->getPrevious()->getMessage() : $e->getMessage(); } return $this->restartJob($request, $e, $message); } catch (\Exception $e) { $this->logger->addError($this->getQueue(), ['exception' => $e]); return $this->restartJob($request, $e); } finally { $this->user->logout(true); $this->em->clear(); } }
public function handleBackup($pass) { if ($this->backupPassword !== null) { if ($this->backupPassword != $pass) { $this->logger->addWarning('Unauthorized try to backup database (auto)'); return; } } if ($this->cache->load('databaseBackup') !== null) { $this->logger->addNotice('Another try to backup database (auto)'); return; } try { $this->databaseBackup->backup('auto', true); $this->cache->save('databaseBackup', 'done', [Cache::EXPIRE => '23 hours']); } catch (\Exception $e) { $this->logger->addError(sprintf('Database backup failure (auto). %s', $e)); } }
protected function logWarning($message, array $context = []) { $this->logger->addWarning($this->prefixMessage($message, "WARNING"), $context); }
/** * Constructs absolute URL from Request object. * @return string|NULL */ public function constructUrl(Nette\Application\Request $appRequest, Nette\Http\Url $refUrl) { $this->loadLocales(); $appPath = $appRequest->getPresenterName() . ':' . $appRequest->getParameter('action') . ':' . $appRequest->getParameter('internal_id'); /** @var Url $urlEntity */ $cachedResult = $this->cache->load($appPath, function (&$dependencies) use($appRequest) { $presenter = $appRequest->getPresenterName(); $action = $appRequest->getParameter('action'); $internal_id = $appRequest->getParameter('internal_id'); $fallback = false; if (isset($internal_id)) { /** @var Url $url */ $urlEntity = $this->getUrlEntity($presenter, $action, $internal_id); if ($urlEntity === null) { $fallback = true; $urlEntity = $this->getUrlEntity($presenter, $action); } } else { $urlEntity = $this->getUrlEntity($presenter, $action); } if ($urlEntity === null) { $this->logger->addWarning(sprintf('No route found | presenter: %s | action: %s | id %s', $presenter, $action, $internal_id)); return null; } $dependencies = [Nette\Caching\Cache::TAGS => $urlEntity->getCacheKey()]; return [$urlEntity, $fallback]; }); $urlEntity = $cachedResult[0]; $fallback = $cachedResult[1]; if ($urlEntity === null) { return null; } $baseUrl = 'http://' . $refUrl->getAuthority() . $refUrl->getBasePath(); if ($urlEntity->getActualUrlToRedirect() === null) { $path = $urlEntity->getUrlPath(); } else { $path = $urlEntity->getActualUrlToRedirect()->getUrlPath(); } $params = $appRequest->getParameters(); unset($params['action']); if ($fallback === false) { unset($params['internal_id']); } $defaultLocale = array_search(true, $this->locales); $locale = isset($params['locale']) ? $params['locale'] : $defaultLocale; unset($params['locale']); if ($defaultLocale === $locale) { $locale = ''; } else { $locale .= '/'; } $resultUrl = $baseUrl . $locale . Nette\Utils\Strings::webalize($path, '/.'); $this->urlParametersConverter->out($urlEntity, $params); // todo $q = http_build_query($params, null, '&'); if ($q != '') { $resultUrl .= '?' . $q; } return $resultUrl; }
/** * {@inheritdoc} * @return Boolean Whether the record has been processed */ public function addWarning($message, array $context = []) { return $this->parentLogger->addWarning($message, ['channel' => $this->name] + $context); }