penpot/frontend/src/app/util/logging.clj

45 lines
1.2 KiB
Clojure

;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.util.logging)
(defn- log-expr [form level keyvals]
(let [keyvals-map (apply array-map keyvals)
formatter (::formatter keyvals-map 'identity)]
`(log ~(::logger keyvals-map (str *ns*))
~level
~(-> keyvals-map
(dissoc ::logger)
#_(assoc :line (:line (meta form))))
~(:err keyvals-map))))
(defmacro set-level!
([level]
`(set-level* ~(str *ns*) ~level))
([n level]
`(set-level* ~n ~level)))
(defmacro error [& keyvals]
(log-expr &form :error keyvals))
(defmacro warn [& keyvals]
(log-expr &form :warn keyvals))
(defmacro info [& keyvals]
(log-expr &form :info keyvals))
(defmacro debug [& keyvals]
(log-expr &form :debug keyvals))
(defmacro trace [& keyvals]
(log-expr &form :trace keyvals))
(defmacro spy [form]
(let [res (gensym)]
`(let [~res ~form]
~(log-expr &form :debug [:spy `'~form
:=> res])
~res)))