Getting the Name of a Clojure Function
Tuesday, September 13th, 2016We wanted to be able to log, to the database, the name of the function that was called and there was no obvious way to do that. There were some half-baked ideas, but we really needed to have a little more robust scheme. So we made this:
(defn fn-name "Function to get the name of the function passed in from the basic information of the function - or in the case of a hooked function, the metadata placed on that function by the hook." [f] (-> (or (:robert.hooke/original (meta f)) f) (class) (str) (cs/replace #"^class " "") (cs/replace #"\$" "/") (cs/replace #"_" "-")))
where:
[clojure.string :as cs]
is in the namespace's require function.
This will take the normal function - or one that Robert Hooke has captured for additional magic, and return it to the caller.
Very handy thing to have for logging... very.