config = $config; $this->newRelicWrapper = $newRelicWrapper; $this->logger = $logger; } /** * Set separate appname * * @param State $subject * @param mixed $result * @return mixed */ public function afterSetAreaCode(State $subject, $result) { if (!$this->shouldSetAppName()) { return $result; } try { $this->newRelicWrapper->setAppName($this->appName($subject)); } catch (LocalizedException $e) { $this->logger->critical($e); return $result; } return $result; } /** * Format appName. * * @param State $state * @return string * @throws LocalizedException */ private function appName(State $state): string { $code = $state->getAreaCode(); $current = $this->config->getNewRelicAppName(); return $current . ';' . $current . '_' . $code; } /** * Check if app name should be set. * * @return bool */ private function shouldSetAppName(): bool { return ( $this->config->isSeparateApps() && $this->config->getNewRelicAppName() && $this->config->isNewRelicEnabled() ); } }