]> git.wh0rd.org - tt-rss.git/blobdiff - classes/logger.php
Logger->log() allow passing context (defaults to '')
[tt-rss.git] / classes / logger.php
old mode 100644 (file)
new mode 100755 (executable)
index 6370e14..732f1fd
@@ -1,9 +1,17 @@
 <?php
 class Logger {
+       private static $instance;
+       private $adapter;
 
-       protected $errornames = array(
+       public static $errornames = array(
+               1                       => 'E_ERROR',
                2                       => 'E_WARNING',
+               4                       => 'E_PARSE',
                8                       => 'E_NOTICE',
+               16                      => 'E_CORE_ERROR',
+               32                      => 'E_CORE_WARNING',
+               64                      => 'E_COMPILE_ERROR',
+               128             => 'E_COMPILE_WARNING',
                256             => 'E_USER_ERROR',
                512             => 'E_USER_WARNING',
                1024            => 'E_USER_NOTICE',
@@ -14,11 +22,46 @@ class Logger {
                32767           => 'E_ALL');
 
        function log_error($errno, $errstr, $file, $line, $context) {
-               return false;
+               if ($errno == E_NOTICE) return false;
+
+               if ($this->adapter)
+                       return $this->adapter->log_error($errno, $errstr, $file, $line, $context);
+               else
+                       return false;
+       }
+
+       function log($string, $context = "") {
+               if ($this->adapter)
+                       return $this->adapter->log_error(E_USER_NOTICE, $string, '', 0, $context);
+               else
+                       return false;
+       }
+
+       private function __clone() {
+               //
        }
 
-       function log($string) {
-               return false;
+       function __construct() {
+               switch (LOG_DESTINATION) {
+               case "sql":
+                       $this->adapter = new Logger_SQL();
+                       break;
+               case "syslog":
+                       $this->adapter = new Logger_Syslog();
+                       break;
+               case "stdout":
+                       $this->adapter = new Logger_Stdout();
+                       break;
+               default:
+                       $this->adapter = false;
+               }
        }
+
+       public static function get() {
+               if (self::$instance == null)
+                       self::$instance = new self();
+
+               return self::$instance;
+       }
+
 }
-?>