Clojure 音色`设置配置!`改变了传统,因此don';我不知道如何使用它将std err/out输出到文件

Clojure 音色`设置配置!`改变了传统,因此don';我不知道如何使用它将std err/out输出到文件,clojure,timbre,Clojure,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) (timbr

我正在尝试使用登录到文件,而不是控制台。以下是我找到的一些关于如何做到这一点的文档:

; 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.taonesso/timbre“4.3.1”]。(由于不相关的原因,我需要使用最新版本)。上面代码的问题是
set config现在接受一个参数-哈希映射。我找不到任何文档可以帮助我将上述“两个参数”代码转换为新的“一个参数”代码


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

我得到了维护人员的快速响应:

“spit(file)appender的使用记录在以下位置的自述文件中”

下面是回答问题的代码:

;; (:require [taoensso.timbre.appenders.core :as appenders]) ; Add to ns
(timbre/merge-config!  
    {:appenders {:println nil ; Remove println appender
                 :spit (appenders/spit-appender {:fname log-file-name})}})

不幸的是,即使使用
:println nil
mapentry,相同的输出也会到达两个位置。因此,这个答案是不正确的。

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

(ns app.core
(:require[tauenso.timber:as timber]
[tauensso.timber.appenders.core:as appenders]))
;; 在timbre v4.0.0中禁用控制台日志记录:
(音色/合并配置!{:appenders{:println{:enabled?false}})
;; 在timbre v4.0.0中创建“spit to file”追加器:
(音色/合并配置!{:appenders{:spit(appenders/spit appender{:fname“log.txt”}}})
请注意,在Timber v4.3.1中,以下内容不会删除或禁用println(控制台)追加器:

(音色/合并配置!{:appenders{:println nil})
相关问题可在此处找到

补充: 因为Timbre允许修改它的配置映射
Timbre/*config*
,只需使用 标准clojure API,您也可以使用

(音色/交换配置!在[:appenders:spit:enabled?]false中关联)
(timber/swap config!assoc in[:appenders:spit](appenders/spit appender{:fname“log.txt”}))
基于此,您还可以定义一个简单的辅助对象:

(def set log config参数!(部分音色/交换配置!assoc in))
然后与timbre v3.4.0设置配置保持一致!语法你 在你的问题中引用了:

;; (:require [taoensso.timbre.appenders.core :as appenders]) ; Add to ns
(timbre/merge-config!  
    {:appenders {:println nil ; Remove println appender
                 :spit (appenders/spit-appender {:fname log-file-name})}})
(设置日志配置参数![:appenders:println:enabled?]false)
(设置日志配置参数![:appenders:spit](appenders/spit appender{:fname“log.txt”}))
Imho这简化了timbre v3和v4之间的配置转换,并使 参数的可读性高于等效参数

(音色/合并配置!{:appenders{:println{:enabled?false}})
(音色/合并配置!{:appenders{:spit(appenders/spit appender{:fname“log.txt”}}})

非常有效,谢谢。您甚至可以执行一个调用,提供一个映射,这是我刚刚在代码中测试的。对,您可以执行
(音色/合并配置!{:appenders{:println{:enabled?false}:spit(appenders/spit appender{:fname log file name})