(defparameter *debug-level* :error) (defparameter *debug-levels* '(:error :warn :info :debug)) (defun set-log-level (level) (if (member level *debug-levels*) (setf *debug-level* level) (error 'type-error :datum level :expected-type *debug-levels*))) (defun f-format (level control-string &rest format-arguments) (when (<= (position level *debug-levels*) (position *debug-level* *debug-levels*)) (format *error-output* control-string format-arguments)))