Fork me on GitHub
#clojure-russia
<
2017-09-26
>
anjensan09:09:05

не надо ничего исключать

anjensan09:09:06

в джаве есть несколько API для логирования. разные либы юзают разные АПИ. это плохая новость

anjensan09:09:30

хорошая - все их можно свести заглушками к log4j или logback. соотв тебе нужно его поставить и сконфигурить

anjensan09:09:20

SLF4J из твоего сообщения - это название одного из таких API (т.е. это либа, но сама не логирует, а только стучится в logback или log4j или еще куда

anjensan09:09:09

@ivana https://logback.qos.ch/documentation.html короче тебе нужно в classpath положить файлик logback.xml (погугли формат)

anjensan09:09:04

>> PS какая хреновая это зараза - библиотеки логинга! не могу сдержаться, но "какая это хреновая зараза - говнокодеры" =(

anjensan09:09:11

без обид только. но суть в том, что спустя некоторое время при добавлении еще одной либы вполне может подтянуться таки другой бекенд к SLF4J и логгинг заработает на полную.

anjensan09:09:15

правильно - добавить что-то вроде такого https://github.com/ngriso/permisdevote/blob/master/src/test/resources/logback.xml (если логгинг вообще не нужен)

ivana10:09:36

Спасибо. Разумеется, пока не не научишься защищаться от лог-спама, со следующей добавленной либой может произойти та же история. Но я, простите, не ожидал, что подключая либу, мне надо будет разбираться во многих моментах, напрямую с ее функционалом не связанных, но мешающих нормально ей пользоваться.

anjensan10:09:30

тебе надо благодарить разработчиков этой либы, что они много логируют

anjensan10:09:11

обрезать лишнее - не проблема (дело всего 1 строчки в logback.xml), а вот добавить логирование когда оно понадобится ну так, самую чуточку, посложнее будет

ivana10:09:33

добавить логирование - это будет моя инициатива, и тогда я осознанно подойду в изучению и выбору конкретного логгера, и почему-то мне кажется, что у меня получится это проще, чем 5 часов пытаться избавиться от прилетевшего неизвестно чего, что я не заказывал. но позицию понял, да.

anjensan10:09:18

а как ты добавишь логирование в чужую библиотеку?

anjensan10:09:26

тем более, что реч, как я понял, про логи из org.eclipse.jetty, что по сути полноценный веб-сервер... веб-сервер без логов это странно

ivana10:09:43

внутрь - придется лезть в ее содержимое. но если я полезу в ее код, то в любом случае буду в нем разбираться. а если она как черный ящик, то достаточно логов внешних вызовов имхо.

anjensan10:09:19

ну если библиотека из 100 строчек и умеет находить факториал и фиббоначи - тогда да

anjensan10:09:49

а если это гребаный https://github.com/eclipse/jetty.project - тогда врядли

ivana11:09:07

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

anjensan11:09:34

подожди. так никто не заменял никакой "лог-интерфейс"

anjensan11:09:44

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

anjensan11:09:05

просто запускать нажно как my-program >> my-program.log

anjensan11:09:04

и это даже явно сказано в документации 🙂

anjensan11:09:54

хотя я полностью соглашусь, что по дефолту стоило бы писать только >= INFO, но не DEBUG

dottedmag12:09:15

Сложно быть библиотекой в 2017 году. Нужно и логи писать, и метрики отсылать, и уметь останавливаться, если не успеваешь в таймслот работу выполнить. Ещё сложнее, если интерфейсы для всего этого не в стандартной библиотеке языка.

kuzmin_m13:09:38

привет вопрос по докеру, может быть кто-то сталкивался докер используется для разработки на 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 и как-то подменять пути (ИМХО правильный путь, но ничего готового я не нашел) сталкивались с подобным? может быть с другими языками?

delaguardo13:09:36

я сталкивался, решилось использованием кастомной настройки в project.clj - :local-repo "/tmp/local-m2/foo" + маунтом вольюма - -v /tmp/local-m2/foo:/tmp/local-m2/foo

delaguardo13:09:01

вся соль в использовании одинаковых путей на хостовой машине и в контейнере

delaguardo13:09:43

более чистый путь - завести в контейнере пользователя, типа box с домашней директорией /home/box и на хосте создать линк ln -s $HOME/.m2 /home/box/.m2

delaguardo13:09:19

в этом случае не нужно будет кастомизировать локальный репозиторий

delaguardo13:09:11

естественно процес в контейнере стоит запускать под этим самым пользователем

kuzmin_m13:09:20

там еще беда с cljs, я уже точно не помню в чем причина, пришлось в Dockerfile добавлять:

RUN mkdir -p /Users/m_kuzmin/projects/github \
    && ln -s /usr/src/app /Users/m_kuzmin/projects/github/form

kuzmin_m13:09:32

можно еще не делать пользователей, а хранить проекты в /projects/.... на хосте и на клиенте, а репозиторий хранить в той же директории, что и проект, настроив через :local-repo

kuzmin_m13:09:50

но все это как то стремно выглядит

delaguardo13:09:20

на маке не так то просто добавить директорию типа /projects )

delaguardo13:09:39

по крайней мере с последними версиями мак оси

kuzmin_m13:09:22

/ $ mkdir /foo
mkdir: /foo: Permission denied
/ $ sudo mkdir /foo
Password:

kuzmin_m13:09:25

создала

kuzmin_m13:09:44

это вроде предпоследняя

delaguardo13:09:04

а, это я как раз со своим случаем попутал, в /home/ создать ничего не получится ьез отключения какого-то спеыиального нового мода

kuzmin_m13:09:57

может еще какой-то вариант есть? я вчера вечером пару часов искал, но как-то безрезультатно

delaguardo13:09:17

других не ведаю(

delaguardo13:09:11

есть вариант с динамической модификацией class-path через middleware, но там черт ногу сломит, у меня терпения разобраться не хватило

kuzmin_m13:09:12

может как-то на tramp перейти? но тогда надо в контейнер тащить git, что бы с ним работали projectile и magit и projectile понимает, что я зашел в проект, но в закладки его не добавляет а для tramp есть docker-tramp или как-то так

kuzmin_m13:09:14

но если это tramp, то зачем на хосте исходники держать? и тогда вообще весь workflow меняется