This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2017-05-05
Channels
- # aws-lambda (1)
- # beginners (294)
- # boot (35)
- # cider (19)
- # cljs-dev (39)
- # cljsrn (7)
- # clojars (48)
- # clojure (266)
- # clojure-android (1)
- # clojure-brasil (1)
- # clojure-france (2)
- # clojure-greece (5)
- # clojure-italy (7)
- # clojure-mexico (1)
- # clojure-russia (24)
- # clojure-spec (10)
- # clojure-uk (31)
- # clojurescript (134)
- # consulting (7)
- # cursive (69)
- # datomic (20)
- # emacs (57)
- # events (2)
- # figwheel (2)
- # hoplon (1)
- # jobs-discuss (19)
- # luminus (33)
- # lumo (18)
- # mount (1)
- # off-topic (32)
- # om (5)
- # onyx (27)
- # pedestal (15)
- # re-frame (12)
- # reagent (28)
- # rum (2)
- # schema (2)
- # spacemacs (9)
- # unrepl (2)
- # untangled (7)
- # vim (5)
- # yada (4)
Еще в копилку сторроников модулярности в жава. http://mail.openjdk.java.net/pipermail/jpms-spec-observers/2017-May/000870.html
Привет всем. Вот я написал программу, которая собрана в jar и у нее есть -main. В программе много printов, я хотел бы, чтобы они логгировались в файл, т.к. программа будет запущена в бекграунде. Я попробовал добавить java -jar myprogram.jar &>> out.txt
, оно работало, но когда программа запускается от имени рута при старте системы и работает как демон и весь оутпут у нее подавлен и ничего с помощью этого не логгируется. Можно инструментами кложуры легко все принты и экзепшены отправить в файл?
А как она как демон запускается? Перезапускается если упадет? Может supervisor подойдет? Там можно указать чтобы в файл принты и логи шли.
Если падает, то не перезапускается. Возможно, я не корректно выразился, когда сказал "как демон". Она просто добавлена в rc.local.
supervisor
это что и где? В кложуре?
А средствами кложур можно как-нибудь? Вдруг я буду на винде запускать
@ilevd то, что мне нужно. Спасибо
можно еще явно *out*
перебиндить на файл аутпут стрим (о, это как раз то, что по ссылке выше)
А тут недавно про плагин kibit говорили, кто еще знает какие-нибудь полезные плагины? Которые в любой проект можно. Я в эту группу lein-ancient могу добавить только
у меня так:
- lein bikeshed -m 100
- lein cljfmt check
- lein eastwood
- lein kibit src
https://github.com/candid82/joker Вот это хорошая штука в качестве линтера
@kgofhedgehogs чтобы сделать clojure приложение, запускаемым как сервис я делаю так: 1. в project.clj в dependencies [commons-daemon/commons-daemon "1.0.15"] 2. в файле, где функция -main надо (:gen-class :implements [org.apache.commons.daemon.Daemon]) 3. в файле, где функция -main надо (:import [org.apache.commons.daemon Daemon DaemonContext]) 4. в файле, где функция -main помещаю 3 простые функции (обязательно с такими именами) (defn -init "init phase of apache daemon" [this ^DaemonContext context] (let [context-arguments (.getArguments context)])) (defn -start "start phase of apache daemon" [this] @(future (start-app)) (Thread/sleep 1000)) (defn -stop "stop phase of apache daemon" [this] (stop-app))
соответственно (start-app) и (stop-app) это уже мои функции, точки входа и выхода в приложение
далее в ОС надо поставить jsvc сервис. в разных ОС это делается по-разному, но делается везде.
Пример запуска приложения: jsvc -server -XX:+UseG1GC -XX:MaxGCPauseMillis=50 -XX:+AggressiveOpts -XX:+UseCompressedOops -Xms256m -Xmx1024m -cwd ./ -java-home "/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/home" -cp "/Users/mike/IdeaProjects/app/target/app.jar" -user mike -pidfile jsvc.pid -outfile '&1' -Duser.dir=/Users/mike/IdeaProjects/app.core
тут можно поиграть с вводом и выводом, на винде тоже будет работать
@kgofhedgehogs в порядке foolproof: что за инит система? Если systemd то rc.local ей (сурпрайз-сурпрайз) может быть глубоко фиолетов. А старт и перенаправление вывода я оставил бы системе. С этим и windows справится