Came across this code in clojure.tools.logging
(defn cl-factory
"Returns a Commons Logging-based implementation of the LoggerFactory
protocol, or
nil if not available."
[]
(try
(Class/forName "org.apache.commons.logging.Log")
(eval
`(do
(extend org.apache.commons.logging.Log
Logger
{:enabled?
(fn [logger# level#]
(condp = level#
:trace (.isTraceEnabled logger#)
:debug (.isDebugEnabled logger#)
:info (.isInfoEnabled logger#)
:warn (.isWarnEnabled logger#)
:error (.isErrorEnabled logger#)
:fatal (.isFatalEnabled logger#)
(throw (IllegalArgumentException. (str level#)))))
:write!
(fn [logger# level# e# msg#]
(if e#
(condp = level#
:trace (.trace logger# msg# e#)
:debug (.debug logger# msg# e#)
:info (.info logger# msg# e#)
:warn (.warn logger# msg# e#)
:error (.error logger# msg# e#)
:fatal (.fatal logger# msg# e#)
(throw (IllegalArgumentException. (str level#))))
(condp = level#
:trace (.trace logger# msg#)
:debug (.debug logger# msg#)
:info (.info logger# msg#)
:warn (.warn logger# msg#)
:error (.error logger# msg#)
:fatal (.fatal logger# msg#)
(throw (IllegalArgumentException. (str
level#))))))})
(reify LoggerFactory
(name [_#]
"org.apache.commons.logging")
(get-logger [_# logger-ns#]
(org.apache.commons.logging.LogFactory/getLog (str logger-
ns#))))))
(catch Exception e nil)))
I do understand what it does with extend and reify but I am not clear
why eval is needed here.
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en