summaryrefslogtreecommitdiffstats
path: root/lib/log.php
diff options
context:
space:
mode:
authorBart Visscher <bartv@thisnet.nl>2013-03-09 21:00:48 +0100
committerBart Visscher <bartv@thisnet.nl>2013-05-13 08:28:10 +0200
commitb41999a2c0628f3241b07afcae0b29bae682583c (patch)
tree620cd1129d19f69550c79a70915af04e2e546fe0 /lib/log.php
parente8c154f3416e7ae596ce0ffc31acda84ffbaa71b (diff)
downloadnextcloud-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.php165
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__);