Как перехватить вывод 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, чтобы начать получать вывод.

Другие вопросы по тегам