我將任務發送給代理,但無法看到我已放入函數的任何打印語句的輸出。如何跟蹤代理上的代碼執行情況?如何在SLIME中捕獲代理的標準輸出/日誌輸出?
編輯:原來我做在控制檯中的輸出,而不是在泥。現在的問題是,如何看到SLIME中的輸出?
我將任務發送給代理,但無法看到我已放入函數的任何打印語句的輸出。如何跟蹤代理上的代碼執行情況?如何在SLIME中捕獲代理的標準輸出/日誌輸出?
編輯:原來我做在控制檯中的輸出,而不是在泥。現在的問題是,如何看到SLIME中的輸出?
關鍵是從emacs開始swank作爲低級lisp進程,而不是從shell調用lein swank。一種方法是使用elein(該命令是M-x elein-swank
)。然後,您可以檢查劣勢lisp緩衝區中的輸出(在使用elein的示例中稱爲*elein-swank*
),或者執行slime-redirect-inferior-output
並將輸出內聯到repl中。 Clojure.contrib.logging是發送日誌輸出的有用工具。
您可以將調用包裝在(with-out-str (def result (my-code)))
的repl中以將輸出捕獲爲字符串。通過這種方式,您可以僅爲您正在處理的代碼執行此操作,而且您不必重新啓動repl即可開始獲取輸出。
在更新版本的clojure模式中,您可以使用M-x clojure-jack-in啓動SLIME和Clojure,並在STLOUT中出現REPL。 – 2012-02-14 09:02:50