From ac8afbf9a9aa6c6d4ac67e01b711420209a2dd67 Mon Sep 17 00:00:00 2001 From: Liam Le Brun Date: Wed, 15 Jul 2015 12:48:57 +0100 Subject: [PATCH 1/3] Ignore "call_user_func" from debug backtrace Helps make this compliant where there is no class defined --- .../Processor/IntrospectionProcessor.php | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/Monolog/Processor/IntrospectionProcessor.php b/src/Monolog/Processor/IntrospectionProcessor.php index 85da0298..29c90ca4 100644 --- a/src/Monolog/Processor/IntrospectionProcessor.php +++ b/src/Monolog/Processor/IntrospectionProcessor.php @@ -56,15 +56,20 @@ class IntrospectionProcessor $i = 0; - while (isset($trace[$i]['class'])) { - foreach ($this->skipClassesPartials as $part) { - if (strpos($trace[$i]['class'], $part) !== false) { - $i++; - continue 2; - } - } - break; - } + while (isset($trace[$i]['class']) || $trace[$i]['function'] == 'call_user_func') { + if(isset($trace[$i]['class'])) { + foreach ($this->skipClassesPartials as $part) { + if (strpos($trace[$i]['class'], $part) !== false) { + $i++; + continue 2; + } + } + } elseif($trace[$i]['function'] == 'call_user_func') { + $i++; + } + + break; + } // we should have the call source now $record['extra'] = array_merge( From e021bbd4b252f1ad5830be40f6e0309cf72aacd0 Mon Sep 17 00:00:00 2001 From: Liam Le Brun Date: Wed, 15 Jul 2015 13:36:37 +0100 Subject: [PATCH 2/3] Multiple functions to skip Add an array for holding the functions to skip, preventing the functions from ever being used for introspection --- src/Monolog/Processor/IntrospectionProcessor.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Monolog/Processor/IntrospectionProcessor.php b/src/Monolog/Processor/IntrospectionProcessor.php index 29c90ca4..da4650a4 100644 --- a/src/Monolog/Processor/IntrospectionProcessor.php +++ b/src/Monolog/Processor/IntrospectionProcessor.php @@ -29,6 +29,11 @@ class IntrospectionProcessor private $level; private $skipClassesPartials; + + private $skipFunctions = array( + 'call_user_func', + 'call_user_func_array', + ); public function __construct($level = Logger::DEBUG, array $skipClassesPartials = array('Monolog\\')) { @@ -56,7 +61,7 @@ class IntrospectionProcessor $i = 0; - while (isset($trace[$i]['class']) || $trace[$i]['function'] == 'call_user_func') { + while (isset($trace[$i]['class']) || in_array($trace[$i]['function'], $this->skipFunctions)) { if(isset($trace[$i]['class'])) { foreach ($this->skipClassesPartials as $part) { if (strpos($trace[$i]['class'], $part) !== false) { @@ -64,7 +69,7 @@ class IntrospectionProcessor continue 2; } } - } elseif($trace[$i]['function'] == 'call_user_func') { + } elseif(in_array($trace[$i]['function'], $this->skipFunctions)) { $i++; } From a287cc630e02a44b70f17d989fea20b84c6fe736 Mon Sep 17 00:00:00 2001 From: Liam Le Brun Date: Wed, 15 Jul 2015 14:02:42 +0100 Subject: [PATCH 3/3] Missed a continue --- src/Monolog/Processor/IntrospectionProcessor.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Monolog/Processor/IntrospectionProcessor.php b/src/Monolog/Processor/IntrospectionProcessor.php index da4650a4..0d4d96ac 100644 --- a/src/Monolog/Processor/IntrospectionProcessor.php +++ b/src/Monolog/Processor/IntrospectionProcessor.php @@ -71,6 +71,7 @@ class IntrospectionProcessor } } elseif(in_array($trace[$i]['function'], $this->skipFunctions)) { $i++; + continue; } break;