Source
(defmacro deflogger (name ancestors &key level appender appenders documentation)
(declare (ignore documentation))
(when appender
(setf appenders (append appenders (list appender))))
(let ((ancestors (mapcar (lambda (ancestor-name)
`(or (get-logger ',ancestor-name)
(error "Attempt to define a sub logger of the undefined logger ~S."
',ancestor-name)))
ancestors)))
(flet ((make-log-helper (suffix level)
`(defmacro ,(intern (strcat name "." suffix)) (message-control &rest message-args)
`(when (enabled-p (get-logger ',',name) ,',level)
,(if message-args
`(handle (get-logger ',',name) (format nil ,message-control ,@message-args) ',',level)
`(handle (get-logger ',',name) ,message-control ',',level))))))
`(progn
(setf (get-logger ',name) (make-instance 'log-category
:name ',name
:level ,level
:appenders (list ,@appenders)
:ancestors (list ,@ancestors)))
,(make-log-helper '#:dribble '+dribble+)
,(make-log-helper '#:debug '+debug+)
,(make-log-helper '#:info '+info+)
,(make-log-helper '#:warn '+warn+)
,(make-log-helper '#:error '+error+)
,(make-log-helper '#:fatal '+fatal+)))))
Source Context