2015-11-16 2 views
1

У меня с трудом скрывается вывод clojure.tools.logging, который использует библиотека. Библиотека регистрирует error, и это вызывает stacktrace на stderr, но это не сообщение об ошибке для меня, и я не могу найти способ скрыть его. Я использую timbre для своего собственного приложения, поэтому я предполагаю, что захват вывода и повторная регистрация его в качестве предупреждения или просто отладка была бы идеальной, но на данный момент мне просто нужен шум в стеке.Подавление вывода из `clojure.tools.logging`

Я попытался подменой ERR к из, а затем вложенности тела в with-out-str.

Я пробовал файл log4j.properties на CLASSPATH с установленным по умолчанию уровнем корневого регистратора на fatal.

Я пробовал потратить несколько часов на другую сумму. Журналирование было представлено в библиотеке здесь: https://github.com/apa512/clj-rethinkdb/commit/5587bdadaed663fcab3b7c616840dfffec84569a, и я не могу понять, как записать его регистратор и установить его уровень, или почему установка уровня корневого регистратора в моем log4j.properties не работает.

Любые предложения, прежде чем я просто сделаю java -jar app 2> /dev/null?

ответ

0

Проект clojure.tools.logging динамически загружает реализацию ведения журнала на основе того, какие зависимости доступны в пути к классам. Если у вас уже нет SLF4J, Commons Logging или Log4j в качестве зависимости от проекта, tools.logging вернется к использованию java.util.logging (который направляет все выходные данные на System.out при отсутствии какой-либо конфигурации), и установка log4j.properties на ваш путь к классам не будет иметь никакого эффекта.

Если вы хотите, чтобы вывод с tools.logging был перенаправлен на Timbre, я бы предложил добавить [org.slf4j/slf4j-api] к вашим зависимостям проекта, а затем с помощью адаптера slf4j-timbre.

+0

'clojure.tools.logging' кажется действительно полезным, но в конечном итоге мое решение заключалось в том, чтобы добавить' [org.slf4j/slf4j-log4j12 "1.7.12"] 'в мои зависимости' project.clj' и поставить 'log4j.properties' в каталоге' resources/'с' log4j.rootLogger = FATAL'. Я обойдусь без протоколирования из других библиотек. – lsh

Смежные вопросы