anchor.diff:           (eval-when (:load-toplevel :execute)
              (setf (get-logger ',name) (make-instance 'log-category
                                                       :name ',name
  -                                                    ,@(when level
  -                                                        `(:level ,level))
  +                                                    ,@(cond (level
  +                                                             `(:level ,level))
  +                                                            ((not ancestors)
  +                                                             `(:level +debug+))
  +                                                            (t '()))
                                                       ,@(when compile-time-level
                                                           `(:compile-time-level ,compile-time-level))
                                                       :appenders (list ,@appenders)
  
positive.code:   (>= level (log.level cat)))
  
  (defmethod log.level ((cat log-category))
    (with-slots (level) cat
      (or level
          (if (ancestors cat)
              (loop for ancestor in (ancestors cat)
                    minimize (log.level ancestor))
              (error "Can't determine level for ~S" cat)))))
  
  (defmethod log.level ((cat-name symbol))
    (log.level (get-logger cat-name)))
  
negative.code:               :documentation "The log categories which inherit from this category.")
     (appenders :initform '()     :accessor appenders :initarg :appenders
                :documentation "A list of appender objects this category sholud send messages to.")
     (level     :initform nil :initarg :level :accessor level
                :type (or null integer)
                :documentation "This category's log level.")
     (compile-time-level
                :initform +dribble+ :initarg :compile-time-level :accessor compile-time-level
  