server/lib/legacy/log.php
Bart Visscher 2eaad58922 Make the object drive the logging backend
This is the other way around then it was.
2013-06-27 20:10:54 +02:00

77 lines
1.8 KiB
PHP

<?php
/**
* Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/
/**
* 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'.
*/
OC_Log::$object = new \OC\Log();
class OC_Log {
public static $object;
const DEBUG=0;
const INFO=1;
const WARN=2;
const ERROR=3;
const FATAL=4;
static private $level_funcs = array(
self::DEBUG => 'debug',
self::INFO => 'info',
self::WARN => 'warning',
self::ERROR => 'error',
self::FATAL => 'emergency',
);
static public $enabled = true;
static protected $class = null;
/**
* write a message in the log
* @param string $app
* @param string $message
* @param int level
*/
public static function write($app, $message, $level) {
if (self::$enabled) {
$context = array('app' => $app);
$func = array(self::$object, self::$level_funcs[$level]);
call_user_func($func, $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;
}
}
// Uncaught exception handler
public static function onException($exception) {
self::write('PHP',
$exception->getMessage() . ' at ' . $exception->getFile() . '#' . $exception->getLine(),
self::FATAL);
}
//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);
}
}