(ns auto-ap.logging
  (:require [clojure.tools.logging :as log]
            [unilog.context :as lc]
            [com.brunobonacci.mulog :as mu]))

(defn info-event [message context]
  (lc/with-context context
    (log/info message)))

(defn warn-event [message context]
  (lc/with-context context
    (log/warn message)))


(defn error-event [message context]
  (lc/with-context context
    (log/warn message)))

(defmacro with-context-as [ctx s & body]
  `(mu/with-context ~ctx
     (let [~s (mu/local-context)]
       ~@body)))

(defmacro capture-context->lc [& body]
  `(let [~'lc (mu/local-context)]
     ~@body))

(defmacro info [x & kvs]
  `(mu/log ~x :status "INFO" ~@kvs ))

(defmacro warn [x & kvs]
  `(mu/log ~x :status "WARN" ~@kvs ))

(defmacro error [x & kvs]
  `(mu/log ~x :status "ERROR" ~@kvs ))
