(ns services.logging (:require [utils.logging :as logging-utils] [mount.core :refer [defstate]] [clojure.tools.logging :as log]) (:import (java.lang.management ManagementFactory) (ch.qos.logback.core ConsoleAppender FileAppender))) (def default-logging-cfg [:configuration [:appender {:name :STDOUT, :class ConsoleAppender} [:encoder [:pattern "%d %-5p [%c{2}] %m%n"]]] [:appender {:name :FILE-MAIN, :class FileAppender} [:file "/tmp/main.log"] [:encoder [:immediate-flush true] [:pattern "%d %-5p [%c{2}] %m%n"]]] [:root {:level :info} [:appender-ref {:ref :FILE-MAIN}]] [:logger {:name 'io.pedestal, :level :info}] [:logger {:name 'foo.bar, :level :warn}]]) (comment ;; See the generated XML: (logging-utils/gen-xml [:configuration [:appender {:name :log.appender/STDOUT, :class ConsoleAppender} [:encoder [:pattern "%d %-5p [%c{2}] %m%n"]]] [:root {:level :info} [:appender-ref {:ref :log.appender/FILE-MAIN}]] [:logger {:name 'io.pedestal, :level :info}] [:logger {:name 'foo.bar, :level :warn}]] true)) (defstate logging :start (do (logging-utils/init-logback! default-logging-cfg) (log/info "JVM-INFO: " (dissoc (bean (ManagementFactory/getRuntimeMXBean)) :classPath))) :stop (log/info "Shutting down logging")) (comment (do (ns foo.bar) (in-ns 'foo.bar) (clojure.tools.logging/warn "hi") (clojure.tools.logging/info "hi")))