defn-with-logging