summaryrefslogtreecommitdiff
path: root/tests/examplefiles/clojure/loggers.cljc
diff options
context:
space:
mode:
Diffstat (limited to 'tests/examplefiles/clojure/loggers.cljc')
-rw-r--r--tests/examplefiles/clojure/loggers.cljc51
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/examplefiles/clojure/loggers.cljc b/tests/examplefiles/clojure/loggers.cljc
new file mode 100644
index 00000000..d9a6722f
--- /dev/null
+++ b/tests/examplefiles/clojure/loggers.cljc
@@ -0,0 +1,51 @@
+(ns re-frame.loggers
+ (:require
+ [clojure.set :refer [difference]]
+ #?@(:clj [[clojure.string :as str]
+ [clojure.tools.logging :as log]])))
+
+#?(:clj (defn log [level & args]
+ (log/log level (if (= 1 (count args))
+ (first args)
+ (str/join " " args)))))
+
+
+;; XXX should loggers be put in the registrar ??
+(def ^:private loggers
+ "Holds the current set of logging functions.
+ By default, re-frame uses the functions provided by js/console.
+ Use `set-loggers!` to change these defaults
+ "
+ (atom #?(:cljs {:log (js/console.log.bind js/console)
+ :warn (js/console.warn.bind js/console)
+ :error (js/console.error.bind js/console)
+ :debug (js/console.debug.bind js/console)
+ :group (if (.-group js/console) ;; console.group does not exist < IE 11
+ (js/console.group.bind js/console)
+ (js/console.log.bind js/console))
+ :groupEnd (if (.-groupEnd js/console) ;; console.groupEnd does not exist < IE 11
+ (js/console.groupEnd.bind js/console)
+ #())})
+ ;; clojure versions
+ #?(:clj {:log (partial log :info)
+ :warn (partial log :warn)
+ :error (partial log :error)
+ :debug (partial log :debug)
+ :group (partial log :info)
+ :groupEnd #()})))
+
+(defn console
+ [level & args]
+ (assert (contains? @loggers level) (str "re-frame: log called with unknown level: " level))
+ (apply (level @loggers) args))
+
+
+(defn set-loggers!
+ [new-loggers]
+ (assert (empty? (difference (set (keys new-loggers)) (-> @loggers keys set))) "Unknown keys in new-loggers")
+ (swap! loggers merge new-loggers))
+
+(defn get-loggers
+ "Get the current logging functions used by re-frame."
+ []
+ @loggers)