From 83956b1703dbb12de264306664b629132cd21e0b Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Tue, 22 Oct 2013 19:16:34 +0200 Subject: [PATCH 1/3] Expand exception stack trace in log in debug mode --- index.php | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/index.php b/index.php index 40063fa6e05..1b9b4a58f7f 100755 --- a/index.php +++ b/index.php @@ -23,6 +23,34 @@ $RUNTIME_NOAPPS = true; //no apps, yet +function logException($ex) { + $message = $ex->getMessage(); + if ($ex->getCode()) { + $message .= ' [' . $message . ']'; + } + \OCP\Util::writeLog('index', $message, \OCP\Util::FATAL); + if (defined('DEBUG') and DEBUG) { + // also log stack trace + $stack = explode('#', $ex->getTraceAsString()); + // first element is empty + array_shift($stack); + foreach ($stack as $s) { + \OCP\Util::writeLog('index', $s, \OCP\Util::FATAL); + } + + // include cause + $l = OC_L10N::get('lib'); + while (method_exists($ex, 'getPrevious') && $ex = $ex->getPrevious()) { + $message .= ' - '.$l->t('Caused by:').' '; + $message .= $ex->getMessage(); + if ($ex->getCode()) { + $message .= '['.$ex->getCode().'] '; + } + \OCP\Util::writeLog('index', $message, \OCP\Util::FATAL); + } + } +} + try { require_once 'lib/base.php'; @@ -30,8 +58,9 @@ try { OC::handleRequest(); } catch (Exception $ex) { + logException($ex); + //show the user a detailed error page - \OCP\Util::writeLog('index', $ex->getMessage(), \OCP\Util::FATAL); OC_Response::setStatus(OC_Response::STATUS_INTERNAL_SERVER_ERROR); OC_Template::printExceptionErrorPage($ex); } From 42c58220def38d5f762dc0c422012b0210577463 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Wed, 23 Oct 2013 10:47:26 +0200 Subject: [PATCH 2/3] Moved logException to OCP\Util class --- index.php | 30 +----------------------------- lib/public/util.php | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 29 deletions(-) diff --git a/index.php b/index.php index 1b9b4a58f7f..ab7333cf0e6 100755 --- a/index.php +++ b/index.php @@ -23,34 +23,6 @@ $RUNTIME_NOAPPS = true; //no apps, yet -function logException($ex) { - $message = $ex->getMessage(); - if ($ex->getCode()) { - $message .= ' [' . $message . ']'; - } - \OCP\Util::writeLog('index', $message, \OCP\Util::FATAL); - if (defined('DEBUG') and DEBUG) { - // also log stack trace - $stack = explode('#', $ex->getTraceAsString()); - // first element is empty - array_shift($stack); - foreach ($stack as $s) { - \OCP\Util::writeLog('index', $s, \OCP\Util::FATAL); - } - - // include cause - $l = OC_L10N::get('lib'); - while (method_exists($ex, 'getPrevious') && $ex = $ex->getPrevious()) { - $message .= ' - '.$l->t('Caused by:').' '; - $message .= $ex->getMessage(); - if ($ex->getCode()) { - $message .= '['.$ex->getCode().'] '; - } - \OCP\Util::writeLog('index', $message, \OCP\Util::FATAL); - } - } -} - try { require_once 'lib/base.php'; @@ -58,7 +30,7 @@ try { OC::handleRequest(); } catch (Exception $ex) { - logException($ex); + \OCP\Util::logException($ex); //show the user a detailed error page OC_Response::setStatus(OC_Response::STATUS_INTERNAL_SERVER_ERROR); diff --git a/lib/public/util.php b/lib/public/util.php index b33f07b55e6..00ef863c24c 100644 --- a/lib/public/util.php +++ b/lib/public/util.php @@ -77,6 +77,39 @@ class Util { \OC_LOG::write( $app, $message, $level ); } + /** + * @brief write exception into the log. Include the stack trace + * if DEBUG mode is enabled + * @param Exception $ex exception to log + */ + public static function logException( \Exception $ex ) { + $message = $ex->getMessage(); + if ($ex->getCode()) { + $message .= ' [' . $ex->getCode() . ']'; + } + \OCP\Util::writeLog('index', 'Exception: ' . $message, \OCP\Util::FATAL); + if (defined('DEBUG') and DEBUG) { + // also log stack trace + $stack = explode('#', $ex->getTraceAsString()); + // first element is empty + array_shift($stack); + foreach ($stack as $s) { + \OCP\Util::writeLog('index', 'Exception: ' . $s, \OCP\Util::FATAL); + } + + // include cause + $l = \OC_L10N::get('lib'); + while (method_exists($ex, 'getPrevious') && $ex = $ex->getPrevious()) { + $message .= ' - '.$l->t('Caused by:').' '; + $message .= $ex->getMessage(); + if ($ex->getCode()) { + $message .= '[' . $ex->getCode() . '] '; + } + \OCP\Util::writeLog('index', 'Exception: ' . $message, \OCP\Util::FATAL); + } + } + } + /** * @brief get l10n object * @param string $app From c4dee281e693088e445a075d5f59f54e34a1010b Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Wed, 23 Oct 2013 13:58:42 +0200 Subject: [PATCH 3/3] Added $app parameter to logException --- index.php | 2 +- lib/public/util.php | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/index.php b/index.php index ab7333cf0e6..0a2f15f9f5e 100755 --- a/index.php +++ b/index.php @@ -30,7 +30,7 @@ try { OC::handleRequest(); } catch (Exception $ex) { - \OCP\Util::logException($ex); + \OCP\Util::logException('index', $ex); //show the user a detailed error page OC_Response::setStatus(OC_Response::STATUS_INTERNAL_SERVER_ERROR); diff --git a/lib/public/util.php b/lib/public/util.php index 00ef863c24c..ed0622b8d16 100644 --- a/lib/public/util.php +++ b/lib/public/util.php @@ -82,19 +82,19 @@ class Util { * if DEBUG mode is enabled * @param Exception $ex exception to log */ - public static function logException( \Exception $ex ) { + public static function logException( $app, \Exception $ex ) { $message = $ex->getMessage(); if ($ex->getCode()) { $message .= ' [' . $ex->getCode() . ']'; } - \OCP\Util::writeLog('index', 'Exception: ' . $message, \OCP\Util::FATAL); + \OCP\Util::writeLog($app, 'Exception: ' . $message, \OCP\Util::FATAL); if (defined('DEBUG') and DEBUG) { // also log stack trace $stack = explode('#', $ex->getTraceAsString()); // first element is empty array_shift($stack); foreach ($stack as $s) { - \OCP\Util::writeLog('index', 'Exception: ' . $s, \OCP\Util::FATAL); + \OCP\Util::writeLog($app, 'Exception: ' . $s, \OCP\Util::FATAL); } // include cause @@ -105,7 +105,7 @@ class Util { if ($ex->getCode()) { $message .= '[' . $ex->getCode() . '] '; } - \OCP\Util::writeLog('index', 'Exception: ' . $message, \OCP\Util::FATAL); + \OCP\Util::writeLog($app, 'Exception: ' . $message, \OCP\Util::FATAL); } } }