diff options
author | Bart Visscher <bartv@thisnet.nl> | 2013-03-09 21:00:48 +0100 |
---|---|---|
committer | Bart Visscher <bartv@thisnet.nl> | 2013-05-13 08:28:10 +0200 |
commit | b41999a2c0628f3241b07afcae0b29bae682583c (patch) | |
tree | 620cd1129d19f69550c79a70915af04e2e546fe0 /lib/log.php | |
parent | e8c154f3416e7ae596ce0ffc31acda84ffbaa71b (diff) | |
download | nextcloud-server-b41999a2c0628f3241b07afcae0b29bae682583c.tar.gz nextcloud-server-b41999a2c0628f3241b07afcae0b29bae682583c.zip |
Implement OC\Log as proxy to OC_Log
OC\Log implements the Psr\Log\LoggerInterface interface. See
https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md
for the full interface specification.
Diffstat (limited to 'lib/log.php')
-rw-r--r-- | lib/log.php | 165 |
1 files changed, 127 insertions, 38 deletions
diff --git a/lib/log.php b/lib/log.php index 3f3334801e5..f7a68c30680 100644 --- a/lib/log.php +++ b/lib/log.php @@ -1,69 +1,158 @@ <?php /** - * Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl> + * Copyright (c) 2013 Bart Visscher <bartv@thisnet.nl> * This file is licensed under the Affero General Public License version 3 or * later. * See the COPYING-README file. */ +namespace OC; + /** * logging utilities * - * Log is saved by default at data/owncloud.log using OC_Log_Owncloud. - * Selecting other backend is done with a config option 'log_type'. + * This is a stand in, this should be replaced by a Psr\Log\LoggerInterface + * compatible logger. See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md + * for the full interface specification. + * + * MonoLog is an example implementing this interface. */ -class OC_Log { +class Log { const DEBUG=0; const INFO=1; const WARN=2; const ERROR=3; const FATAL=4; - static public $enabled = true; - static protected $class = null; + const NOTICE=5; + const CRITICAL=6; + const ALERT=7; /** - * write a message in the log - * @param string $app + * System is unusable. + * * @param string $message - * @param int level + * @param array $context + * @return null */ - public static function write($app, $message, $level) { - if (self::$enabled) { - if (!self::$class) { - self::$class = 'OC_Log_'.ucfirst(OC_Config::getValue('log_type', 'owncloud')); - call_user_func(array(self::$class, 'init')); - } - $log_class=self::$class; - $log_class::write($app, $message, $level); - } + public function emergency($message, array $context = array()) + { + $this->log(OC_Log::FATAL, $message, $context); } - //Fatal errors handler - public static function onShutdown() { - $error = error_get_last(); - if($error) { - //ob_end_clean(); - self::write('PHP', $error['message'] . ' at ' . $error['file'] . '#' . $error['line'], self::FATAL); - } else { - return true; - } + /** + * Action must be taken immediately. + * + * Example: Entire website down, database unavailable, etc. This should + * trigger the SMS alerts and wake you up. + * + * @param string $message + * @param array $context + * @return null + */ + public function alert($message, array $context = array()) + { + $this->log(self::ALERT, $message, $context); } - // Uncaught exception handler - public static function onException($exception) { - self::write('PHP', - $exception->getMessage() . ' at ' . $exception->getFile() . '#' . $exception->getLine(), - self::FATAL); + /** + * Critical conditions. + * + * Example: Application component unavailable, unexpected exception. + * + * @param string $message + * @param array $context + * @return null + */ + public function critical($message, array $context = array()) + { + $this->log(self::CRITICAL, $message, $context); } - //Recoverable errors handler - public static function onError($number, $message, $file, $line) { - if (error_reporting() === 0) { - return; - } - self::write('PHP', $message . ' at ' . $file . '#' . $line, self::WARN); + /** + * Runtime errors that do not require immediate action but should typically + * be logged and monitored. + * + * @param string $message + * @param array $context + * @return null + */ + public function error($message, array $context = array()) + { + $this->log(OC_Log::ERROR, $message, $context); + } + + /** + * Exceptional occurrences that are not errors. + * + * Example: Use of deprecated APIs, poor use of an API, undesirable things + * that are not necessarily wrong. + * + * @param string $message + * @param array $context + * @return null + */ + public function warning($message, array $context = array()) + { + $this->log(OC_Log::WARN, $message, $context); + } + /** + * Normal but significant events. + * + * @param string $message + * @param array $context + * @return null + */ + public function notice($message, array $context = array()) + { + $this->log(self::NOTICE, $message, $context); + } + + /** + * Interesting events. + * + * Example: User logs in, SQL logs. + * + * @param string $message + * @param array $context + * @return null + */ + public function info($message, array $context = array()) + { + $this->log(OC_Log::INFO, $message, $context); + } + + /** + * Detailed debug information. + * + * @param string $message + * @param array $context + * @return null + */ + public function debug($message, array $context = array()) + { + $this->log(OC_Log::DEBUG, $message, $context); + } + + /** + * Logs with an arbitrary level. + * + * @param mixed $level + * @param string $message + * @param array $context + * @return null + */ + protected function log($level, $message, array $context = array()) + { + if (isset($context['app'])) { + $app = $context['app']; + } else { + $app = 'no app in context'; + } + OC_Log::write($app, $message, $level); } } + +require_once __DIR__.'/legacy/'.basename(__FILE__); |