anchor.diff:                                        (getf elem prop)))
                                  '(:oneline :twoline :time :file :file2)))
                         *default-patterns*)))
  -    (getf (or pat (first *default-patterns*)) :pattern)))
  +    (let ((pat (getf (or pat (first *default-patterns*)) :pattern)))
  +      ;; handle pretty, ndc and thread
  +      (flet ((frob (x y)
  +               (let ((n (search x pat)))
  +                 (when n
  +                   (setq pat (concatenate
  +                              'string
  +                              (subseq pat 0 n)
  +                              y
  +                              (subseq pat (+ n (length x)))))))))
  +        (cond ((getf args :pretty)
  +               (frob "%<" "%:<"))
  +              ((getf args :nopretty)
  +               (frob "%>" "%<")
  +               (frob "%<" "%>")))
  +        (cond
  +          ((and (getf args :thread)
  +                (getf args :ndc))
  +           (frob "%t" " [%t%:;-;x]"))
  +          ((getf args :thread)
  +           (frob "%t" " [%t]"))
  +          ((getf args :ndc)
  +           (frob "%t" "%:; [;;];x"))
  +          (t (frob "%t" "")))
  +        pat))))
   
   (defun log-config (&rest args)
     "User friendly way of configuring loggers. General syntax is:
  
positive.code:       ;; This is special adhoc case of configuring the LOG4CL-iMPL:SELF.  We need
        ;; special processing, because we want self-logging to survive
        ;; the (clear-logging-configuration), which is done doing tests
        (let ((config (cons :own
                            ;; we don't remember these
                            (remove-if (lambda (x)
                                         (member x '(:own :self :clear :all :twoline :two-line
                                                     :2line :oneline :one-line :1line
                                                     :file :file2 :nofile
                                                     :time :notime)))
                                       orig-args))))
          ;; If anything non-default was specified, remember
          (let ((lst '(:sane :daily :console :this-console))) 
            (if (null (intersection lst config))
  
negative.code:  :FILE or      | Include file name into default pattern, :FILE2 uses alternate
   :FILE2        | position for the file (in front of the package).
   :NOFILE       | :NOFILE removes the file
  ---------------|---------------------------------------------------------------
   :THREAD       | Include thread name into default pattern, it will be after the
                 | time, in [%t] format
  ---------------|---------------------------------------------------------------
   :NDC          | Include NDC context into default pattern, if thread is also
                 | specified, it will be after the thread name, separated by dash
                 | like this: [threadname-ndc], and will not be shown if NIL or
                 | unbound
                 |
                 | If thread name is not specified, it will be included in place
                 | of a thread name, in [%x] format, not taking any space if unset
                 | or NIL
  ---------------|---------------------------------------------------------------
   :PRETTY       | Force pretty printing, or opposite bind *PRINT-PRETTY* to NIL
  ---------------|---------------------------------------------------------------
   :PROPERTIES   | Configure with PROPERTY-CONFIGURATOR by parsing specified     
   FILE          | properties file                                               
  