summaryrefslogtreecommitdiffstats
path: root/lib/log.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/log.php')
-rw-r--r--lib/log.php153
1 files changed, 110 insertions, 43 deletions
diff --git a/lib/log.php b/lib/log.php
index 3f3334801e5..e0b9fe3c696 100644
--- a/lib/log.php
+++ b/lib/log.php
@@ -1,69 +1,136 @@
<?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 {
- const DEBUG=0;
- const INFO=1;
- const WARN=2;
- const ERROR=3;
- const FATAL=4;
+class Log {
+ private $logClass;
- static public $enabled = true;
- static protected $class = null;
+ /**
+ * System is unusable.
+ *
+ * @param string $message
+ * @param array $context
+ */
+ public function emergency($message, array $context = array()) {
+ $this->log(\OC_Log::FATAL, $message, $context);
+ }
/**
- * write a message in the log
- * @param string $app
+ * 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 int level
+ * @param array $context
*/
- 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 alert($message, array $context = array()) {
+ $this->log(\OC_Log::ERROR, $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;
- }
+ /**
+ * Critical conditions.
+ *
+ * Example: Application component unavailable, unexpected exception.
+ *
+ * @param string $message
+ * @param array $context
+ */
+ public function critical($message, array $context = array()) {
+ $this->log(\OC_Log::ERROR, $message, $context);
}
- // Uncaught exception handler
- public static function onException($exception) {
- self::write('PHP',
- $exception->getMessage() . ' at ' . $exception->getFile() . '#' . $exception->getLine(),
- self::FATAL);
+ /**
+ * Runtime errors that do not require immediate action but should typically
+ * be logged and monitored.
+ *
+ * @param string $message
+ * @param array $context
+ */
+ public function error($message, array $context = array()) {
+ $this->log(\OC_Log::ERROR, $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);
+ /**
+ * 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
+ */
+ public function warning($message, array $context = array()) {
+ $this->log(\OC_Log::WARN, $message, $context);
+ }
+
+ /**
+ * Normal but significant events.
+ *
+ * @param string $message
+ * @param array $context
+ */
+ public function notice($message, array $context = array()) {
+ $this->log(\OC_Log::INFO, $message, $context);
+ }
+ /**
+ * Interesting events.
+ *
+ * Example: User logs in, SQL logs.
+ *
+ * @param string $message
+ * @param array $context
+ */
+ public function info($message, array $context = array()) {
+ $this->log(\OC_Log::INFO, $message, $context);
+ }
+
+ /**
+ * Detailed debug information.
+ *
+ * @param string $message
+ * @param array $context
+ */
+ public function debug($message, array $context = array()) {
+ $this->log(\OC_Log::DEBUG, $message, $context);
+ }
+
+ public function __construct() {
+ $this->logClass = 'OC_Log_'.ucfirst(\OC_Config::getValue('log_type', 'owncloud'));
+ call_user_func(array($this->logClass, 'init'));
+ }
+
+ /**
+ * Logs with an arbitrary level.
+ *
+ * @param mixed $level
+ * @param string $message
+ * @param array $context
+ */
+ public function log($level, $message, array $context = array()) {
+ if (isset($context['app'])) {
+ $app = $context['app'];
+ } else {
+ $app = 'no app in context';
+ }
+ $logClass=$this->logClass;
+ $logClass::write($app, $message, $level);
}
}