【发布时间】:2014-06-29 07:19:42
【问题描述】:
我想将 core.async 用作写入文件的记录器,因此我创建了一个 test.txt 文件,将其粘贴在我的资源文件夹中并编写了以下代码:
(use 'clojure.java.io)
(use 'clojure.core.async)
(def print-chan (chan))
(go (loop []
(when-let [v (<! print-chan)]
(with-open [wrtr (writer "resources/test.txt" :append true)]
(.write wrtr v))
(recur))))
(>!! print-chan 42)
但是,当我运行它时,我发现它只会替换文件中的内容,而不是附加到文件中。此外,有时写入文件的输出是奇怪的。有一次,我尝试输入 42,结果却得到了 *。当我使用没有 core.async 功能的编写器时,它按预期工作。使用 core.async 在 Clojure 中写入日志文件的惯用方式是什么?提前致谢!
*我正在使用灯台。
【问题讨论】:
标签: logging asynchronous clojure java-io core.async