anchor.diff:  (defgeneric log-message (logger log-level format-string &rest format-arguments)
     (:documentation "Write a log entry to the message log."))
   
  -
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  -;;; Simple logger for logging to a stream
  +;;; Simple logger for logging to an open character stream.
   
   (defclass stream-logger ()
     ((destination :initarg :destination :reader destination)
  
positive.code: 
  (defvar *default-logger* (make-instance 'stream-logger :destination *error-output*))
  
  (defmethod  log-access ((logger stream-logger) request)
    (with-log-stream (stream (destination logger) (lock logger))
      (format stream "~:[-~@[ (~A)~]~;~:*~A~@[ (~A)~]~] ~:[-~;~:*~A~] [~A] \"~A ~A ~
                      ~A\" ~D ~:[-~;~:*~D~] \"~:[-~;~:*~A~]\" \"~:[-~;~:*~A~]\"~%"
              (remote-addr request)
              (request-header :x-forwarded-for request)
              (authorization request)
              (iso-time)
              (request-method request)
              (request-uri request)
              (server-protocol request)
              (status-code request)
              (content-length request)
              (request-header :referer request)
              (request-header :user-agent request))))
  
  (defmethod log-message ((logger stream-logger) log-level format-string &rest format-arguments)
    (with-log-stream (stream (destination logger) (lock logger))
      (format stream "[~A~@[ [~A]~]] ~?~%"
              (iso-time) log-level
              format-string format-arguments)))
  
  
negative.code: 
  (in-package :toot)
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;; Logging API -- the server logs HTTP requests and miscelaneous
  ;;; messages using these two generic functions, called on logger
  ;;; objects held by the server.
  
  (defgeneric log-access (logger request)
    (:documentation "Write a log entry for the request to the access log."))
  