не надо ничего исключать
в джаве есть несколько API для логирования. разные либы юзают разные АПИ. это плохая новость
хорошая - все их можно свести заглушками к log4j или logback. соотв тебе нужно его поставить и сконфигурить
SLF4J из твоего сообщения - это название одного из таких API (т.е. это либа, но сама не логирует, а только стучится в logback или log4j или еще куда
@ivana https://logback.qos.ch/documentation.html короче тебе нужно в classpath положить файлик logback.xml (погугли формат)
>> PS какая хреновая это зараза - библиотеки логинга! не могу сдержаться, но "какая это хреновая зараза - говнокодеры" =(
без обид только. но суть в том, что спустя некоторое время при добавлении еще одной либы вполне может подтянуться таки другой бекенд к SLF4J и логгинг заработает на полную.
правильно - добавить что-то вроде такого https://github.com/ngriso/permisdevote/blob/master/src/test/resources/logback.xml (если логгинг вообще не нужен)
Спасибо. Разумеется, пока не не научишься защищаться от лог-спама, со следующей добавленной либой может произойти та же история. Но я, простите, не ожидал, что подключая либу, мне надо будет разбираться во многих моментах, напрямую с ее функционалом не связанных, но мешающих нормально ей пользоваться.
тебе надо благодарить разработчиков этой либы, что они много логируют
обрезать лишнее - не проблема (дело всего 1 строчки в logback.xml), а вот добавить логирование когда оно понадобится ну так, самую чуточку, посложнее будет
добавить логирование - это будет моя инициатива, и тогда я осознанно подойду в изучению и выбору конкретного логгера, и почему-то мне кажется, что у меня получится это проще, чем 5 часов пытаться избавиться от прилетевшего неизвестно чего, что я не заказывал. но позицию понял, да.
а как ты добавишь логирование в чужую библиотеку?
тем более, что реч, как я понял, про логи из org.eclipse.jetty, что по сути полноценный веб-сервер... веб-сервер без логов это странно
внутрь - придется лезть в ее содержимое. но если я полезу в ее код, то в любом случае буду в нем разбираться. а если она как черный ящик, то достаточно логов внешних вызовов имхо.
ну если библиотека из 100 строчек и умеет находить факториал и фиббоначи - тогда да
а если это гребаный https://github.com/eclipse/jetty.project - тогда врядли
ну да, я понимаю о чем ты. но все равно можно делать это логирование в либах как-то более настраиваемо и предсказуемо, чем просто заменять молча лог-интерфейс, не прикладывая ни конфига ни настроек, и считая, что разработчик сам все знает и настроит. а если завтра какая-нибудь либа мне диск форматировать начнет? типа, должен быть конфиг, в котором указано, какие разделы форматировать не надо )
подожди. так никто не заменял никакой "лог-интерфейс"
у логирования должно же быть некое поведение по умолчанию? ну вот по умолчанию - писать логи в консоль. что вполне логично и часто юзается
просто запускать нажно как my-program >> my-program.log
https://www.eclipse.org/jetty/documentation/9.4.x/default-logging-with-stderrlog.html
и это даже явно сказано в документации 🙂
хотя я полностью соглашусь, что по дефолту стоило бы писать только >= INFO, но не DEBUG
Сложно быть библиотекой в 2017 году. Нужно и логи писать, и метрики отсылать, и уметь останавливаться, если не успеваешь в таймслот работу выполнить. Ещё сложнее, если интерфейсы для всего этого не в стандартной библиотеке языка.
привет вопрос по докеру, может быть кто-то сталкивался докер используется для разработки на clojure с хоста в контейнер монтируется директория с кодом внутри контейнера jvm в контейнере запускается repl server порт пробрасывается на localhost на хосте запускается emacs cider и коннектится к repl и это работает, но есть проблемы на хосте папка с проектом это /User/kuzmin/projects/......../project в контейнере /usr/src/app иногда редактору сносит крышу и он не правильно обрабатывает ошибки, не правильно прыгает по файлам, т.к. пути разные особенно это заметно при работе с cljs плюс там maven и репозиторий хранится только в контейнере в /root/.m2 соответственно хост его не видит, и если открыть документацию в emacs, там ссылка на какую-нибудь jar из репозитория, и емакс ее не может открыть, т.к. на хосте нет такого файла при использовании emacs tramp все ок, но не все с ним работает как нужно и нужно git тащить в контейнер можно еще попробовать сделать одинаковые пути на хосте и в контейнере можно запустиь emacs в docker можно посмотреть в сторону nrepl middleware и как-то подменять пути (ИМХО правильный путь, но ничего готового я не нашел) сталкивались с подобным? может быть с другими языками?
я сталкивался, решилось использованием кастомной настройки в project.clj - :local-repo "/tmp/local-m2/foo"
+ маунтом вольюма - -v /tmp/local-m2/foo:/tmp/local-m2/foo
вся соль в использовании одинаковых путей на хостовой машине и в контейнере
более чистый путь - завести в контейнере пользователя, типа box
с домашней директорией /home/box
и на хосте создать линк ln -s $HOME/.m2 /home/box/.m2
в этом случае не нужно будет кастомизировать локальный репозиторий
естественно процес в контейнере стоит запускать под этим самым пользователем
там еще беда с cljs, я уже точно не помню в чем причина, пришлось в Dockerfile добавлять:
RUN mkdir -p /Users/m_kuzmin/projects/github \
&& ln -s /usr/src/app /Users/m_kuzmin/projects/github/form
можно еще не делать пользователей, а хранить проекты в /projects/.... на хосте и на клиенте, а репозиторий хранить в той же директории, что и проект, настроив через :local-repo
но все это как то стремно выглядит
на маке не так то просто добавить директорию типа /projects
)
по крайней мере с последними версиями мак оси
/ $ mkdir /foo
mkdir: /foo: Permission denied
/ $ sudo mkdir /foo
Password:
создала
sierra
это вроде предпоследняя
а, это я как раз со своим случаем попутал, в /home/ создать ничего не получится ьез отключения какого-то спеыиального нового мода
может еще какой-то вариант есть? я вчера вечером пару часов искал, но как-то безрезультатно
других не ведаю(
=(
есть вариант с динамической модификацией class-path через middleware, но там черт ногу сломит, у меня терпения разобраться не хватило
может как-то на tramp перейти? но тогда надо в контейнер тащить git, что бы с ним работали projectile и magit и projectile понимает, что я зашел в проект, но в закладки его не добавляет а для tramp есть docker-tramp или как-то так
но если это tramp, то зачем на хосте исходники держать? и тогда вообще весь workflow меняется