Submit
Path:
~
/
/
usr
/
local
/
psa
/
admin
/
plib
/
modules
/
wp-toolkit
/
vendor
/
monolog
/
monolog
/
src
/
Monolog
/
Handler
/
File Content:
NewRelicHandler.php
<?php declare (strict_types=1); /* * This file is part of the Monolog package. * * (c) Jordi Boggiano <j.boggiano@seld.be> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace WPToolkitDependenciesIsolationPrefix\Monolog\Handler; use WPToolkitDependenciesIsolationPrefix\Monolog\Logger; use WPToolkitDependenciesIsolationPrefix\Monolog\Utils; use WPToolkitDependenciesIsolationPrefix\Monolog\Formatter\NormalizerFormatter; use WPToolkitDependenciesIsolationPrefix\Monolog\Formatter\FormatterInterface; /** * Class to record a log on a NewRelic application. * Enabling New Relic High Security mode may prevent capture of useful information. * * This handler requires a NormalizerFormatter to function and expects an array in $record['formatted'] * * @see https://docs.newrelic.com/docs/agents/php-agent * @see https://docs.newrelic.com/docs/accounts-partnerships/accounts/security/high-security */ class NewRelicHandler extends AbstractProcessingHandler { /** * Name of the New Relic application that will receive logs from this handler. * * @var ?string */ protected $appName; /** * Name of the current transaction * * @var ?string */ protected $transactionName; /** * Some context and extra data is passed into the handler as arrays of values. Do we send them as is * (useful if we are using the API), or explode them for display on the NewRelic RPM website? * * @var bool */ protected $explodeArrays; /** * {@inheritDoc} * * @param string|null $appName * @param bool $explodeArrays * @param string|null $transactionName */ public function __construct($level = Logger::ERROR, bool $bubble = \true, ?string $appName = null, bool $explodeArrays = \false, ?string $transactionName = null) { parent::__construct($level, $bubble); $this->appName = $appName; $this->explodeArrays = $explodeArrays; $this->transactionName = $transactionName; } /** * {@inheritDoc} */ protected function write(array $record) : void { if (!$this->isNewRelicEnabled()) { throw new MissingExtensionException('The newrelic PHP extension is required to use the NewRelicHandler'); } if ($appName = $this->getAppName($record['context'])) { $this->setNewRelicAppName($appName); } if ($transactionName = $this->getTransactionName($record['context'])) { $this->setNewRelicTransactionName($transactionName); unset($record['formatted']['context']['transaction_name']); } if (isset($record['context']['exception']) && $record['context']['exception'] instanceof \Throwable) { \newrelic_notice_error($record['message'], $record['context']['exception']); unset($record['formatted']['context']['exception']); } else { \newrelic_notice_error($record['message']); } if (isset($record['formatted']['context']) && \is_array($record['formatted']['context'])) { foreach ($record['formatted']['context'] as $key => $parameter) { if (\is_array($parameter) && $this->explodeArrays) { foreach ($parameter as $paramKey => $paramValue) { $this->setNewRelicParameter('context_' . $key . '_' . $paramKey, $paramValue); } } else { $this->setNewRelicParameter('context_' . $key, $parameter); } } } if (isset($record['formatted']['extra']) && \is_array($record['formatted']['extra'])) { foreach ($record['formatted']['extra'] as $key => $parameter) { if (\is_array($parameter) && $this->explodeArrays) { foreach ($parameter as $paramKey => $paramValue) { $this->setNewRelicParameter('extra_' . $key . '_' . $paramKey, $paramValue); } } else { $this->setNewRelicParameter('extra_' . $key, $parameter); } } } } /** * Checks whether the NewRelic extension is enabled in the system. * * @return bool */ protected function isNewRelicEnabled() : bool { return \extension_loaded('newrelic'); } /** * Returns the appname where this log should be sent. Each log can override the default appname, set in this * handler's constructor, by providing the appname in it's context. * * @param mixed[] $context */ protected function getAppName(array $context) : ?string { if (isset($context['appname'])) { return $context['appname']; } return $this->appName; } /** * Returns the name of the current transaction. Each log can override the default transaction name, set in this * handler's constructor, by providing the transaction_name in it's context * * @param mixed[] $context */ protected function getTransactionName(array $context) : ?string { if (isset($context['transaction_name'])) { return $context['transaction_name']; } return $this->transactionName; } /** * Sets the NewRelic application that should receive this log. */ protected function setNewRelicAppName(string $appName) : void { \newrelic_set_appname($appName); } /** * Overwrites the name of the current transaction */ protected function setNewRelicTransactionName(string $transactionName) : void { \newrelic_name_transaction($transactionName); } /** * @param string $key * @param mixed $value */ protected function setNewRelicParameter(string $key, $value) : void { if (null === $value || \is_scalar($value)) { \newrelic_add_custom_parameter($key, $value); } else { \newrelic_add_custom_parameter($key, Utils::jsonEncode($value, null, \true)); } } /** * {@inheritDoc} */ protected function getDefaultFormatter() : FormatterInterface { return new NormalizerFormatter(); } }
Edit
Rename
Chmod
Delete
FILE
FOLDER
INFO
Name
Size
Permission
Action
Curl
---
0755
FingersCrossed
---
0755
Slack
---
0755
SyslogUdp
---
0755
AbstractHandler.php
2759 bytes
0644
AbstractProcessingHandler.php
1947 bytes
0644
AbstractSyslogHandler.php
3592 bytes
0644
AmqpHandler.php
5037 bytes
0644
BrowserConsoleHandler.php
9475 bytes
0644
BufferHandler.php
4792 bytes
0644
ChromePHPHandler.php
5287 bytes
0644
CouchDBHandler.php
2049 bytes
0644
CubeHandler.php
5458 bytes
0644
DeduplicationHandler.php
6156 bytes
0644
DoctrineCouchDBHandler.php
1314 bytes
0644
DynamoDbHandler.php
2706 bytes
0644
ElasticaHandler.php
3487 bytes
0644
ElasticsearchHandler.php
6565 bytes
0644
ErrorLogHandler.php
2745 bytes
0644
FallbackGroupHandler.php
1797 bytes
0644
FilterHandler.php
7020 bytes
0644
FingersCrossedHandler.php
8702 bytes
0644
FirePHPHandler.php
5325 bytes
0644
FleepHookHandler.php
3544 bytes
0644
FlowdockHandler.php
3636 bytes
0644
FormattableHandlerInterface.php
919 bytes
0644
FormattableHandlerTrait.php
1389 bytes
0644
GelfHandler.php
1582 bytes
0644
GroupHandler.php
3337 bytes
0644
Handler.php
1280 bytes
0644
HandlerInterface.php
3070 bytes
0644
HandlerWrapper.php
3460 bytes
0644
IFTTTHandler.php
2233 bytes
0644
InsightOpsHandler.php
1968 bytes
0644
LogEntriesHandler.php
1812 bytes
0644
LogglyHandler.php
4247 bytes
0644
LogmaticHandler.php
2662 bytes
0644
MailHandler.php
2449 bytes
0644
MandrillHandler.php
2508 bytes
0644
MissingExtensionException.php
510 bytes
0644
MongoDBHandler.php
2733 bytes
0644
NativeMailerHandler.php
5086 bytes
0644
NewRelicHandler.php
6351 bytes
0644
NoopHandler.php
920 bytes
0644
NullHandler.php
1409 bytes
0644
OverflowHandler.php
4539 bytes
0644
PHPConsoleHandler.php
10867 bytes
0644
ProcessHandler.php
5231 bytes
0644
ProcessableHandlerInterface.php
1271 bytes
0644
ProcessableHandlerTrait.php
1846 bytes
0644
PsrHandler.php
2548 bytes
0644
PushoverHandler.php
7757 bytes
0644
RedisHandler.php
3149 bytes
0644
RedisPubSubHandler.php
1999 bytes
0644
RollbarHandler.php
3366 bytes
0644
RotatingFileHandler.php
6253 bytes
0644
SamplingHandler.php
4421 bytes
0644
SendGridHandler.php
2949 bytes
0644
SlackHandler.php
6873 bytes
0644
SlackWebhookHandler.php
3867 bytes
0644
SocketHandler.php
12311 bytes
0644
SqsHandler.php
1856 bytes
0644
StreamHandler.php
7207 bytes
0644
SwiftMailerHandler.php
3852 bytes
0644
SymfonyMailerHandler.php
3825 bytes
0644
SyslogHandler.php
2029 bytes
0644
SyslogUdpHandler.php
4520 bytes
0644
TelegramBotHandler.php
8260 bytes
0644
TestHandler.php
6826 bytes
0644
WebRequestRecognizerTrait.php
562 bytes
0644
WhatFailureGroupHandler.php
1985 bytes
0644
ZendMonitorHandler.php
3067 bytes
0644
N4ST4R_ID | Naxtarrr