我想使用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中写入日志文件的惯用方法是什么?谢谢!*我正在使用Light Table。
newline
。可以将其包含在消息中:(.write wrtr "42\n")
,也可以明确地写出来:(.write wrtr "\n")
。 - liwp(.write wrtr (str v "\n"))
。 - danneu