Skip to content

Commit

Permalink
CRM_Core_Error::debug_var() should have a level arg; CRM_Core_Error m…
Browse files Browse the repository at this point in the history
…ethods could use Civi::log() internally; prefix param support for Civi::log().
  • Loading branch information
mfb committed May 10, 2019
1 parent 8459619 commit 3ac984a
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 14 deletions.
38 changes: 25 additions & 13 deletions CRM/Core/Error.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@

require_once 'Log.php';

use Psr\Log\LogLevel;

/**
* Class CRM_Exception
*/
Expand Down Expand Up @@ -232,7 +234,7 @@ public static function handle($pearError) {
$errorDetails = CRM_Core_Error::debug('', $error, FALSE);
$template->assign_by_ref('errorDetails', $errorDetails);

CRM_Core_Error::debug_var('Fatal Error Details', $error);
CRM_Core_Error::debug_var('Fatal Error Details', $error, TRUE, TRUE, '', LogLevel::ERROR);
CRM_Core_Error::backtrace('backTrace', TRUE);

if ($config->initialized) {
Expand Down Expand Up @@ -339,7 +341,7 @@ public static function fatal($message = NULL, $code = NULL, $email = NULL) {

if (self::$modeException) {
// CRM-11043
CRM_Core_Error::debug_var('Fatal Error Details', $vars);
CRM_Core_Error::debug_var('Fatal Error Details', $vars, TRUE, TRUE, '', LogLevel::ERROR);
CRM_Core_Error::backtrace('backTrace', TRUE);

$details = 'A fatal error was triggered';
Expand Down Expand Up @@ -381,7 +383,7 @@ function_exists($config->fatalErrorHandler)
self::backtrace();
}

CRM_Core_Error::debug_var('Fatal Error Details', $vars);
CRM_Core_Error::debug_var('Fatal Error Details', $vars, TRUE, TRUE, '', LogLevel::ERROR);
CRM_Core_Error::backtrace('backTrace', TRUE);

// If we are in an ajax callback, format output appropriately
Expand Down Expand Up @@ -421,7 +423,7 @@ public static function handleUnhandledException($exception) {
}
catch (Exception $other) {
// if the exception-handler generates an exception, then that sucks! oh, well. carry on.
CRM_Core_Error::debug_var('handleUnhandledException_nestedException', self::formatTextException($other));
CRM_Core_Error::debug_var('handleUnhandledException_nestedException', self::formatTextException($other), TRUE, TRUE, '', LogLevel::ERROR);
}
$config = CRM_Core_Config::singleton();
$vars = [
Expand Down Expand Up @@ -459,7 +461,7 @@ function_exists($config->fatalErrorHandler)
// Case C: Default error handler

// log to file
CRM_Core_Error::debug_var('Fatal Error Details', $vars, FALSE);
CRM_Core_Error::debug_var('Fatal Error Details', $vars, FALSE, TRUE, '', LogLevel::ERROR);
CRM_Core_Error::backtrace('backTrace', TRUE);

// print to screen
Expand Down Expand Up @@ -544,14 +546,16 @@ public static function debug($name, $variable = NULL, $log = TRUE, $html = TRUE,
* Log or return the output?
* @param string $prefix
* Prefix for output logfile.
* @param string $level
* The PSR-3 log level.
*
* @return string
* The generated output
*
* @see CRM_Core_Error::debug()
* @see CRM_Core_Error::debug_log_message()
*/
public static function debug_var($variable_name, $variable, $print = TRUE, $log = TRUE, $prefix = '') {
public static function debug_var($variable_name, $variable, $print = TRUE, $log = TRUE, $prefix = '', $level = LogLevel::INFO) {
// check if variable is set
if (!isset($variable)) {
$out = "\$$variable_name is not set";
Expand All @@ -574,7 +578,15 @@ public static function debug_var($variable_name, $variable, $print = TRUE, $log
reset($variable);
}
}
return self::debug_log_message($out, FALSE, $prefix);
Civi::log()->log($level, $out, ['civi.prefix' => $prefix]);
return self::debugOutput($out);
}

/**
* Generates debug HTML output.
*/
public static function debugOutput($message) {
return '<p/><code>' . htmlspecialchars($message) . '</code>';
}

/**
Expand All @@ -600,7 +612,7 @@ public static function debug_log_message($message, $out = FALSE, $prefix = '', $
$file_log = self::createDebugLogger($prefix);
$file_log->log("$message\n", $priority);

$str = '<p/><code>' . htmlspecialchars($message) . '</code>';
$str = self::debugOutput($message);
if ($out && CRM_Core_Permission::check('view debug output')) {
echo $str;
}
Expand Down Expand Up @@ -635,7 +647,7 @@ public static function debug_query($string) {
CRM_Core_Error::backtrace($string, TRUE);
}
elseif (CIVICRM_DEBUG_LOG_QUERY) {
CRM_Core_Error::debug_var('Query', $string, TRUE, TRUE, 'sql_log');
CRM_Core_Error::debug_var('Query', $string, TRUE, TRUE, 'sql_log', LogLevel::DEBUG);
}
}
}
Expand All @@ -647,7 +659,7 @@ public static function debug_query($string) {
*/
public static function debug_query_result($query) {
$results = CRM_Core_DAO::executeQuery($query)->fetchAll();
CRM_Core_Error::debug_var('dao result', ['query' => $query, 'results' => $results]);
CRM_Core_Error::debug_var('dao result', ['query' => $query, 'results' => $results], TRUE, TRUE, '', LogLevel::DEBUG);
}

/**
Expand Down Expand Up @@ -731,7 +743,7 @@ public static function backtrace($msg = 'backTrace', $log = FALSE) {
CRM_Core_Error::debug($msg, $message);
}
else {
CRM_Core_Error::debug_var($msg, $message);
CRM_Core_Error::debug_var($msg, $message, TRUE, TRUE, '', LogLevel::DEBUG);
}
}

Expand Down Expand Up @@ -948,7 +960,7 @@ public static function reset() {
* @throws PEAR_Exception
*/
public static function exceptionHandler($pearError) {
CRM_Core_Error::debug_var('Fatal Error Details', self::getErrorDetails($pearError));
CRM_Core_Error::debug_var('Fatal Error Details', self::getErrorDetails($pearError), TRUE, TRUE, '', LogLevel::ERROR);
CRM_Core_Error::backtrace('backTrace', TRUE);
throw new PEAR_Exception($pearError->getMessage(), $pearError);
}
Expand All @@ -962,7 +974,7 @@ public static function exceptionHandler($pearError) {
* $obj
*/
public static function nullHandler($obj) {
CRM_Core_Error::debug_log_message("Ignoring exception thrown by nullHandler: {$obj->code}, {$obj->message}");
Civi::log()->error("Ignoring exception thrown by nullHandler: {$obj->code}, {$obj->message}");
CRM_Core_Error::backtrace('backTrace', TRUE);
return $obj;
}
Expand Down
6 changes: 5 additions & 1 deletion CRM/Core/Error/Log.php
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ public function __construct() {
public function log($level, $message, array $context = []) {
// FIXME: This flattens a $context a bit prematurely. When integrating
// with external/CMS logs, we should pass through $context.
$prefix = '';
if (!empty($context)) {
if (isset($context['exception'])) {
$context['exception'] = CRM_Core_Error::formatTextException($context['exception']);
Expand All @@ -68,8 +69,11 @@ public function log($level, $message, array $context = []) {
if (CRM_Utils_System::isDevelopment() && CRM_Utils_Array::value('civi.tag', $context) === 'deprecated') {
trigger_error($message, E_USER_DEPRECATED);
}
if (isset($context['civi.prefix'])) {
$prefix = $context['civi.prefix'];
}
}
CRM_Core_Error::debug_log_message($message, FALSE, '', $this->map[$level]);
CRM_Core_Error::debug_log_message($message, FALSE, $prefix, $this->map[$level]);
}

}

0 comments on commit 3ac984a

Please sign in to comment.