diff --git a/app/code/Magento/NewRelicReporting/Model/NewRelicWrapper.php b/app/code/Magento/NewRelicReporting/Model/NewRelicWrapper.php index c4818c38cd9c6..845ed0429d2c3 100644 --- a/app/code/Magento/NewRelicReporting/Model/NewRelicWrapper.php +++ b/app/code/Magento/NewRelicReporting/Model/NewRelicWrapper.php @@ -28,6 +28,19 @@ public function addCustomParameter($param, $value) return false; } + /** + * Wrapper for 'newrelic_notice_error' function + * + * @param Exception $exception + * @return void + */ + public function reportError($exception) + { + if (extension_loaded('newrelic')) { + newrelic_notice_error($exception->getMessage(), $exception); + } + } + /** * Checks whether newrelic-php5 agent is installed * diff --git a/app/code/Magento/NewRelicReporting/Plugin/HttpPlugin.php b/app/code/Magento/NewRelicReporting/Plugin/HttpPlugin.php new file mode 100644 index 0000000000000..a37d93329d43a --- /dev/null +++ b/app/code/Magento/NewRelicReporting/Plugin/HttpPlugin.php @@ -0,0 +1,53 @@ +config = $config; + $this->newRelicWrapper = $newRelicWrapper; + } + + /** + * Report exception to New Relic + * + * @param Http $subject + * @param Bootstrap $bootstrap + * @param \Exception $exception + * @return void + * + * @SuppressWarnings(PHPMD.UnusedFormalParameter) + */ + public function beforeCatchException(Http $subject, Bootstrap $bootstrap, \Exception $exception) + { + if ($this->config->isNewRelicEnabled()) { + $this->newRelicWrapper->reportError($exception); + } + } +} diff --git a/app/code/Magento/NewRelicReporting/etc/di.xml b/app/code/Magento/NewRelicReporting/etc/di.xml index a0d06105dd3fe..cba92f91cd4bb 100644 --- a/app/code/Magento/NewRelicReporting/etc/di.xml +++ b/app/code/Magento/NewRelicReporting/etc/di.xml @@ -27,4 +27,7 @@ + + +