问题
For Java development, I use Slf4j and Logback.
Logger logger = LoggerFactory.getLogger(HelloWorld.class);
logger.debug("Hello world.");
How to use these two libs in Clojure programs? Majority of Clojure programming doesn't has .class concept (possible of course via AOT).
What do you use for logging in Clojure?
回答1:
Clojure comes with a logging core library in tools.logging. Add [org.clojure/tools.logging "0.2.3"]
to your leiningen project.clj
and run $lein deps
as usual.
Once you use
the library you can start logging away
(use 'clojure.tools.logging)
(warn "something bad happened")
Now you can also access the logger object and set the required fields, refer to the following article for this (written for the older contrib-lib but the same ideas apply):
http://www.paullegato.com/blog/setting-clojure-log-level/
回答2:
Look at this as well https://github.com/ptaoussanis/timbre . It looks very simple and nicely done.
回答3:
tools.logging. For details, refer to tools.logging vs clojure.contrib.logging
回答4:
some excerpts from a one of my projects that uses log4j:
log.clj:
(ns
#^{:author "Arthur Ulfeldt",
:doc "Polynomial threshold encryption"}
com.cryptovide.log
(:gen-class)
(:use
clojure.contrib.logging))
...
(def logger (org.apache.log4j.Logger/getLogger "A1"))
(def log-levels (vec ( org.apache.log4j.Level/getAllPossiblePriorities)))
...
(defn start-logging []
(org.apache.log4j.BasicConfigurator/configure))
main.clj:
(start-logging)
(. logger setLevel (log-levels verbose-level))
来源:https://stackoverflow.com/questions/5219837/logging-in-clojure