Skip to content

Instantly share code, notes, and snippets.

@caskolkm
Last active March 14, 2019 10:31
Show Gist options
  • Save caskolkm/39d823f5bac7051d3062 to your computer and use it in GitHub Desktop.
Save caskolkm/39d823f5bac7051d3062 to your computer and use it in GitHub Desktop.

Revisions

  1. caskolkm revised this gist Aug 13, 2015. No changes.
  2. caskolkm created this gist Aug 13, 2015.
    44 changes: 44 additions & 0 deletions logging.cljc
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,44 @@
    (ns app.logging
    (:refer-clojure :exclude [time])
    (:require #?(:clj [clojure.tools.logging :as log]
    :cljs [goog.log :as glog]))
    #?(:cljs (:import goog.debug.Console)))

    #?(:cljs
    (def logger
    (glog/getLogger "app")))

    #?(:cljs
    (def levels {:severe goog.debug.Logger.Level.SEVERE
    :warning goog.debug.Logger.Level.WARNING
    :info goog.debug.Logger.Level.INFO
    :config goog.debug.Logger.Level.CONFIG
    :fine goog.debug.Logger.Level.FINE
    :finer goog.debug.Logger.Level.FINER
    :finest goog.debug.Logger.Level.FINEST}))

    #?(:cljs
    (defn log-to-console! []
    (.setCapturing (goog.debug.Console.) true)))

    #?(:cljs
    (defn set-level! [level]
    (.setLevel logger (get levels level (:info levels)))))

    (defn fmt [msgs]
    (apply str (interpose " " (map pr-str msgs))))

    (defn info [& s]
    (let [msg (fmt s)]
    #?(:clj (log/info msg)
    :cljs (glog/info logger msg))))

    (defn debug [& s]
    (let [msg (fmt s)]
    #?(:clj (log/debug msg)
    :cljs (glog/fine logger msg))))

    (defn error [& s]
    (let [msg (fmt s)]
    #?(:clj (log/error msg)
    :cljs (glog/error logger msg))))