       */   
      public function finalize() { }
 -    
--    /**
++
+     /**
 -     * Retrieve a readable representation of a variable
--     *
++     * Creates a string representation of this object
+      *
 -     * @param   mixed var
--     * @return  string
--     */
+      * @return  string
+      */
 -    protected function varSource($var) {
 -      return is_string($var) ? $var : xp::stringOf($var);
--    }
++    public function toString() {
++      return $this->getClassName().'(layout= '.xp::stringOf($this->layout).')';
+     }
    }
  ?>
 Index: skeleton/util/log/BufferedAppender.class.php

       $args= func_get_args();
-      array_unshift($args, LogLevel::DEBUG);
-      call_user_func_array(array($this, 'callAppenders'), $args);
+      $this->callAppenders(new LoggingEvent($this, time(), getmypid(), LogLevel::DEBUG, $args));
     }
  
     /**
@@ -294,8 +270,9 @@
      * @param   mixed* args
      */
     public function debugf() {
+      if (!($this->flags & LogLevel::DEBUG)) return;
       $args= func_get_args();
-      $this->callAppenders(LogLevel::DEBUG, vsprintf($args[0], array_slice($args, 1)));
+      $this->callAppenders(new LoggingEvent($this, time(), getmypid(), LogLevel::DEBUG, array(vsprintf($args[0], array_slice($args, 1)))));
     }
    
     /**
@@ -303,7 +280,20 @@
      *
      */
     public function mark() {
-      $this->callAppenders(LogLevel::INFO, str_repeat('-', 72));
+      $this->callAppenders(new LoggingEvent($this, time(), getmypid(), LogLevel::INFO, array(str_repeat('-', 72))));
     }
+
+    /**
+     * Returns whether another object is equal to this

       $args= func_get_args();
-      array_unshift($args, LogLevel::INFO);
-      call_user_func_array(array($this, 'callAppenders'), $args);
+      $this->callAppenders(LogLevel::INFO, $args);
     }
 
     /**
@@ -228,8 +198,9 @@
      * @param   mixed* args
      */
     public function infof() {
+      if (!($this->flags & LogLevel::INFO)) return;
       $args= func_get_args();
-      $this->callAppenders(LogLevel::INFO, vsprintf($args[0], array_slice($args, 1)));
+      $this->callAppenders(LogLevel::INFO, array(vsprintf($args[0], array_slice($args, 1))));
     }
 
     /**
@@ -238,9 +209,9 @@
      * @param   mixed* args
      */
     public function warn() {
