mirror of
https://github.com/penpot/penpot.git
synced 2025-06-05 21:01:39 +02:00
✨ Minor enhacements on log processing.
This commit is contained in:
parent
c6054f7ab2
commit
1839397ebc
10 changed files with 83 additions and 108 deletions
|
@ -6,7 +6,7 @@
|
|||
|
||||
(ns app.common.data
|
||||
"Data manipulation and query helper functions."
|
||||
(:refer-clojure :exclude [read-string hash-map merge name])
|
||||
(:refer-clojure :exclude [read-string hash-map merge name parse-double])
|
||||
#?(:cljs
|
||||
(:require-macros [app.common.data]))
|
||||
(:require
|
||||
|
|
|
@ -17,9 +17,12 @@
|
|||
org.apache.logging.log4j.LogManager
|
||||
org.apache.logging.log4j.Logger
|
||||
org.apache.logging.log4j.ThreadContext
|
||||
org.apache.logging.log4j.CloseableThreadContext
|
||||
org.apache.logging.log4j.message.MapMessage
|
||||
org.apache.logging.log4j.spi.LoggerContext)))
|
||||
|
||||
#?(:clj (set! *warn-on-reflection* true))
|
||||
|
||||
#?(:clj
|
||||
(defn build-map-message
|
||||
[m]
|
||||
|
@ -37,14 +40,13 @@
|
|||
(defn get-logger
|
||||
[lname]
|
||||
#?(:clj (.getLogger ^LoggerContext logger-context ^String lname)
|
||||
:cljs
|
||||
(glog/getLogger
|
||||
(cond
|
||||
(string? lname) lname
|
||||
(= lname :root) ""
|
||||
(simple-ident? lname) (name lname)
|
||||
(qualified-ident? lname) (str (namespace lname) "." (name lname))
|
||||
:else (str lname)))))
|
||||
:cljs (glog/getLogger
|
||||
(cond
|
||||
(string? lname) lname
|
||||
(= lname :root) ""
|
||||
(simple-ident? lname) (name lname)
|
||||
(qualified-ident? lname) (str (namespace lname) "." (name lname))
|
||||
:else (str lname)))))
|
||||
|
||||
(defn get-level
|
||||
[level]
|
||||
|
@ -151,20 +153,48 @@
|
|||
;; CLJ Specific
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(defn- simple-prune
|
||||
([s] (simple-prune s (* 1024 1024)))
|
||||
([s max-length]
|
||||
(if (> (count s) max-length)
|
||||
(str (subs s 0 max-length) " [...]")
|
||||
s)))
|
||||
|
||||
#?(:clj
|
||||
(defn update-thread-context!
|
||||
(defn stringify-data
|
||||
[val]
|
||||
(cond
|
||||
(instance? clojure.lang.Named val)
|
||||
(name val)
|
||||
|
||||
(string? val)
|
||||
val
|
||||
|
||||
(coll? val)
|
||||
(binding [clojure.pprint/*print-right-margin* 120]
|
||||
(-> (with-out-str (pprint val))
|
||||
(simple-prune (* 1024 1024 3))))
|
||||
|
||||
:else
|
||||
(str val))))
|
||||
|
||||
#?(:clj
|
||||
(defn data->context-map
|
||||
^java.util.Map
|
||||
[data]
|
||||
(run! (fn [[key val]]
|
||||
(ThreadContext/put
|
||||
(name key)
|
||||
(cond
|
||||
(coll? val)
|
||||
(binding [clojure.pprint/*print-right-margin* 120]
|
||||
(with-out-str (pprint val)))
|
||||
(instance? clojure.lang.Named val) (name val)
|
||||
:else (str val))))
|
||||
(into {}
|
||||
(comp (filter second)
|
||||
(map (fn [[key val]]
|
||||
[(stringify-data key)
|
||||
(stringify-data val)])))
|
||||
data)))
|
||||
|
||||
#?(:clj
|
||||
(defmacro with-context
|
||||
[data & body]
|
||||
`(with-open [instance# (CloseableThreadContext/putAll (data->context-map ~data))]
|
||||
~@body)))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; CLJS Specific
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
|
|
@ -211,13 +211,11 @@
|
|||
[spec x message context]
|
||||
(if (s/valid? spec x)
|
||||
x
|
||||
(let [data (s/explain-data spec x)
|
||||
explain (with-out-str (s/explain-out data))]
|
||||
(let [data (s/explain-data spec x)]
|
||||
(ex/raise :type :assertion
|
||||
:code :spec-validation
|
||||
:hint message
|
||||
:data data
|
||||
:explain explain
|
||||
:context context
|
||||
#?@(:cljs [:stack (.-stack (ex-info message {}))])))))
|
||||
|
||||
|
@ -253,12 +251,9 @@
|
|||
[spec data]
|
||||
(let [result (s/conform spec data)]
|
||||
(when (= result ::s/invalid)
|
||||
(let [data (s/explain-data spec data)
|
||||
explain (with-out-str
|
||||
(s/explain-out data))]
|
||||
(let [data (s/explain-data spec data)]
|
||||
(throw (ex/error :type :validation
|
||||
:code :spec-validation
|
||||
:explain explain
|
||||
:data data))))
|
||||
result))
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue