Skip to content

Instantly share code, notes, and snippets.

@takeisa
Created September 30, 2012 09:26
Show Gist options
  • Save takeisa/3806325 to your computer and use it in GitHub Desktop.
Save takeisa/3806325 to your computer and use it in GitHub Desktop.
[Clojure] Logger example
;; Clojure logger example
(defn print-logger [writer]
#(binding [*out* writer]
(println %)))
(def *out*-logger (print-logger *out*))
(def writer (java.io.StringWriter.))
(def retain-logger (print-logger writer))
(require '[clojure.java.io :as io])
(defn file-logger [file]
#(with-open [f (io/writer file :append true)]
((print-logger f) %)))
(def log->file (file-logger "/home/satoshi/work/test.log"))
(defn multi-logger [& logger-fns]
#(doseq [f logger-fns]
(f %)))
(defn timestamped-logger [logger]
#(logger (format "[%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS] %2$s" (java.util.Date.) %)))
(def logger (timestamped-logger
(multi-logger
*out*-logger
log->file)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment