Как перехватить вывод stdout/log агента в SLIME?
Я отправляю задачу агенту, но не вижу вывод ни одного оператора печати, который я поместил в функцию. Как отследить выполнение кода на агентах?
РЕДАКТИРОВАТЬ: Оказывается, я получаю вывод в консоли, но не в SLIME. Вопрос теперь в том, как увидеть вывод в SLIME?
2 ответа
Ключ заключается в том, чтобы запустить swank из emacs как низший процесс lisp вместо вызова lein swank из оболочки. Один из способов сделать это - использовать elein (команда M-x elein-swank
). Затем вы можете проверить вывод в буфере нижнего lisp (который называется *elein-swank*
в примере использования elein) или выполнить slime-redirect-inferior-output
и иметь вывод в строке в репл. Clojure.contrib.logging - это полезный инструмент для отправки вывода журнала.
Вы можете обернуть звонки в своем репле в (with-out-str (def result (my-code)))
захватить вывод в виде строки. Таким образом, вы можете сделать это только для кода, над которым работаете, и вам не нужно перезапускать repl, чтобы начать получать вывод.