clojure – timbre`set-config!`已更改arity因此不知道如何使用它将std err / out输出到文件

我正在尝试使用
https://github.com/ptaoussanis/timbre来记录文件而不是控制台.以下是我发现的一些如何做到这一点的文档:

; The default setup is simple console logging.  We with to turn off console logging and
; turn on file logging to our chosen filename.
(timbre/set-config! [:appenders :standard-out   :enabled?] false)
(timbre/set-config! [:appenders :spit           :enabled?] true)
(timbre/set-config! [:shared-appender-config :spit-filename] log-file-name)
(timbre/set-config! [:shared-appender-config :spit-filename] log-file-name)

这适用于以前版本的sente,但不适用于版本[com.taoensso / timbre“4.3.1”]. (由于无关的原因,我需要使用最新的).上面代码的问题是set-config!现在需要一个参数 – 一个哈希映射.而且我找不到任何可以帮助我将上述“两个参数”代码翻译成新的“一个参数”代码的文档.

我知道there有一个非常相似的问题.这个问题有实际的代码,所以更具体.我也提出了一个问题.上面的代码基本上直接来自here.

最佳答案 要在timbre v4.0.0(2015年6月10日)中登录文件而不是控制台,您可以执行以下操作:

(ns app.core
  (:require [taoensso.timbre :as timbre]
            [taoensso.timbre.appenders.core :as appenders]))

;; Disable logging to the console in timbre v4.0.0:
(timbre/merge-config! {:appenders {:println {:enabled? false}}})

;; Create a "spit to file" appender in timbre v4.0.0: 
(timbre/merge-config! {:appenders {:spit (appenders/spit-appender {:fname "log.txt"})}})

请注意,在音色v4.3.1中,以下内容不会删除或禁用println(控制台)appender:

(timbre/merge-config! {:appenders {:println nil}})

相关问题可以在这里找到https://github.com/ptaoussanis/timbre/issues/163

加成:
由于Timbre允许简单地使用修改它的配置映射timbre / * config *
标准的clojure API,您也可以使用

(timbre/swap-config! assoc-in [:appenders :spit :enabled?] false)
(timbre/swap-config! assoc-in [:appenders :spit] (appenders/spit-appender {:fname "log.txt"}))

基于此,您还可以定义一个简单的帮助器:

(def set-log-config-param! (partial timbre/swap-config! assoc-in))

然后与音色v3.4.0 set-config保持一致!语法你
引用了你的问题:

(set-log-config-param! [:appenders :println :enabled?] false)
(set-log-config-param! [:appenders :spit]   (appenders/spit-appender {:fname "log.txt"}))

Imho这简化了音色v3和v4之间的配置转换,并制作了路径
除了等价物之外,params更具可读性

(timbre/merge-config! {:appenders {:println {:enabled? false}}})
(timbre/merge-config! {:appenders {:spit    (appenders/spit-appender {:fname "log.txt"})}})
点赞