Clojure tools.logging不记录stacktrace

Odi*_*din 6 clojure

tools.logging的最新版本(0.2.4)中,当使用(error some-exception)进行日志记录时,仅记录异常消息.我依赖于在记录异常时打印堆栈跟踪.将异常打印到stderr或stdout不是一种选择.

据我所知,在源代码中,(error ...)确实将异常作为第一个参数.

 (log/error throwable error-message)
Run Code Online (Sandbox Code Playgroud)

记录时,我可以做些什么来包含堆栈跟踪?

Dan*_*ero 3

错误的签名是:

(defmacro error
  "Error level logging using print-style args."
  {:arglists '([message & more] [throwable message & more])}
  [& args]
  `(logp :error ~@args))
Run Code Online (Sandbox Code Playgroud)

这意味着只有 1 个参数(如(error some-exception)),参数就是消息(在您的情况下是toString某些异常的消息)。

如果您想记录堆栈跟踪,您需要第二个参数消息,例如:

(def ex (RuntimeException. "ex"))
(error ex "Something broke!")
Run Code Online (Sandbox Code Playgroud)

或者

(error ex ex)
Run Code Online (Sandbox Code Playgroud)