登录Clojure

Chi*_*ron 23 logging jvm clojure slf4j

对于Java开发,我使用Slf4j和Logback.

Logger logger = LoggerFactory.getLogger(HelloWorld.class);
logger.debug("Hello world.");
Run Code Online (Sandbox Code Playgroud)

如何在Clojure程序中使用这两个库?大多数Clojure编程没有.class概念(当然可以通过AOT).

你用什么来登录Clojure?

小智 33

Clojure在tools.logging中附带了一个日志核心库.添加[org.clojure/tools.logging "0.2.3"]到您的leiningen project.clj$lein deps像往常一样运行.

一旦你use成为图书馆,你就可以开始记录

(use 'clojure.tools.logging)
(warn "something bad happened") 
Run Code Online (Sandbox Code Playgroud)

现在您还可以访问logger对象并设置必需的字段,请参阅以下文章(针对较旧的contrib-lib编写,但同样的想法适用):

http://www.paullegato.com/blog/setting-clojure-log-level/

  • 不推荐使用contrib来支持tools.logging https://github.com/clojure/tools.logging (10认同)

jos*_*hua 13

看看这个也是https://github.com/ptaoussanis/timbre.它看起来很简单,做得很好.

  • 这是另一个更详细地涵盖 Timbre 日志记录的问题:http://stackoverflow.com/questions/32310619/clojure-configure-timbre-logging/32340732#32340732 (2认同)

Jin*_*Yao 9

tools.logging.有关详细信息,请参阅tools.logging vs clojure.contrib.logging


Art*_*ldt 5

我使用log4j一个项目的一些摘录:

log.clj:

(ns 
    #^{:author "Arthur Ulfeldt", 
       :doc "Polynomial threshold encryption"}
  com.cryptovide.log
  (:gen-class)
  (:use
   clojure.contrib.logging))
Run Code Online (Sandbox Code Playgroud)

...

(def logger (org.apache.log4j.Logger/getLogger "A1"))
(def log-levels (vec ( org.apache.log4j.Level/getAllPossiblePriorities)))
Run Code Online (Sandbox Code Playgroud)

...

(defn start-logging []
  (org.apache.log4j.BasicConfigurator/configure))
Run Code Online (Sandbox Code Playgroud)

main.clj:

(start-logging)
(. logger setLevel (log-levels verbose-level))
Run Code Online (Sandbox Code Playgroud)