anchor.diff:                :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 +debug+ :initarg :level :accessor level
  -              :type integer
  +   (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
  
positive.code:          (eval-when (:load-toplevel :execute)
             (setf (get-logger ',name) (make-instance 'log-category
                                                      :name ',name
                                                      ,@(when level
                                                          `(:level ,level))
                                                      ,@(when compile-time-level
                                                          `(:compile-time-level ,compile-time-level))
                                                      :appenders (list ,@appenders)
  
negative.code:   (>= level (log.level cat)))
  
  (defmethod log.level ((cat log-category))
    (or (level cat)
        (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)))
  