首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以音色记录到两个文件

以音色记录到两个文件
EN

Stack Overflow用户
提问于 2016-12-04 01:05:33
回答 1查看 465关注 0票数 1

我试图用音色从同一个名称空间登录到两个不同的文件。或者,如果这是不可能的,至少对于来自两个不同名称空间的不同文件。

检查timbre/*config*,我得到的印象是,我需要两个配置映射来配置类似的东西。我可以创建另一个配置映射,并与timbre/log*一起使用它来代替标准的配置映射,但我无法摆脱这样的感觉:这不是应该如何使用的.?

代码语言:javascript
复制
(timbre/log* timbre/*config* :info "Test with standard config")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-04 03:19:21

AFAIK,最简单的方法确实是创建两个配置映射:

代码语言:javascript
复制
(def config1
   {:level :debug 
    :appenders {:spit1 (appenders/spit-appender {:fname "file1.log"})}})

(def config2
   {:level :debug 
    :appenders {:spit2 (appenders/spit-appender {:fname "file2.log"})}})

(timbre/with-config config1
    (info "This will print in file1") )

(timbre/with-config config2
    (info "This will print in file2") )

第二种方法是从中编写您自己的附录:

https://github.com/ptaoussanis/timbre/blob/master/src/taoensso/timbre/appenders/core.cljx

代码语言:javascript
复制
(defn my-spit-appender
  "Returns a simple `spit` file appender for Clojure."
  [& [{:keys [fname] :or {fname "./timbre-spit.log"}}]]
  {:enabled?   true
   :async?     false
   :min-level  nil
   :rate-limit nil
   :output-fn  :inherit
   :fn
   (fn self [data]
     (let [{:keys [output_]} data]
       (try

        ;; SOME LOGIC HERE TO CHOOSE THE FILE TO OUTPUT TO ...             

         (spit fname (str (force output_) "\n") :append true)
         (catch java.io.IOException e
           (if (:__spit-appender/retry? data)
             (throw e) ; Unexpected error
             (let [_    (have? enc/nblank-str? fname)
                   file (java.io.File. ^String fname)
                   dir  (.getParentFile (.getCanonicalFile file))]

               (when-not (.exists dir) (.mkdirs dir))
               (self (assoc data :__spit-appender/retry? true))))))))})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40954292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档