Как перехватить вывод stdout/log агента в SLIME?

Я отправляю задачу агенту, но не вижу вывода каких-либо операторов печати, которые я поместил в функцию. Как отследить выполнение кода на агентах?

EDIT: Оказывается, я действительно получаю вывод в консоли, но не в SLIME. Теперь вопрос в том, как увидеть вывод в SLIME?


person Alex B    schedule 27.02.2011    source источник


Ответы (2)


Суть в том, чтобы запускать swank из emacs как подчиненный процесс lisp вместо того, чтобы вызывать lein swank из оболочки. Один из способов сделать это — использовать elein (команда M-x elein-swank) . Затем вы можете либо проверить вывод в подчиненном буфере lisp (который называется *elein-swank* в примере с использованием elein), либо выполнить slime-redirect-inferior-output и получить вывод, встроенный в repl. Clojure.contrib.logging — полезный инструмент для отправки выходных данных журнала.

person rplevy    schedule 28.02.2011
comment
В более поздних версиях clojure-mode вы можете выполнить M-x clojure-jack-in, чтобы запустить SLIME и Clojure со STDOUT, появляющимся в REPL. - person Paul Legato; 14.02.2012

Вы можете обернуть вызовы в своем ответе в (with-out-str (def result (my-code))), чтобы зафиксировать вывод в виде строки. таким образом, вы можете сделать это только для кода, над которым вы работаете, и вам не нужно перезапускать свой ответ, чтобы начать получать результат.

person Arthur Ulfeldt    schedule 28.02.2011