Logging in Clojure

心已入冬 提交于 2020-02-26 05:38:34

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!