Clojure工具库tools.logging无法记录堆栈跟踪信息

6
在最新版本(0.2.4)的tools.logging中,当使用(error some-exception)记录日志时,只会记录异常消息。我需要在记录异常时打印堆栈跟踪信息。将异常打印到stderr或stdout不是可选项。
就我所看到的情况,在源代码中,(error ...)确实将异常作为第一个参数。
 (log/error throwable error-message)

我该如何在记录日志时包含堆栈跟踪信息?
1个回答

3
错误的签名是:
(defmacro error
  "Error level logging using print-style args."
  {:arglists '([message & more] [throwable message & more])}
  [& args]
  `(logp :error ~@args))

这意味着当只有一个参数(如(error some-exception))时,该参数是消息(在您的情况下为some-exceptiontoString)。
如果你想记录堆栈跟踪,你需要用第二个参数来传递消息:
(def ex (RuntimeException. "ex"))
(error ex "Something broke!")

或者
(error ex ex)

我尝试了(error ex "some-message"),但它没有打印出堆栈跟踪。 - Odinodin
嗨Odinodin,它对我有效。我刚意识到你声称正在使用版本0.2.5,但是该版本尚不存在。最新发布的版本是0.2.4。 - DanLebrero

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接