Fork me on GitHub
#clojure-russia
<
2015-10-28
>
pacman16:10:04

всем доброго времени суток

pacman16:10:51

как логировать все сообщения. выводимые uberjar приложением

pacman16:10:25

то есть ежели его запускать как java -jar myapp-standaone.jar

prepor16:10:34

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

prepor16:10:54

или использовать то что уже есть (возможно) в этом убержаре

pacman17:10:16

ну я вот подсунул log4j

pacman17:10:23

оно вроде логирует

pacman17:10:42

но вот нестандартные ошибки. они в консоль то сыпятся

pacman17:10:50

а в фаил не логируются

pacman17:10:04

хотелось бы чтобы в файл логировалось тоже

pacman17:10:19

а там чисто получается

pacman17:10:50

для информации, у меня вебприложение на ринге,, решил собрать его как uberjar

kronos_vano17:10:21

&2>1 пробовал?

prepor17:10:10

> но вот нестандартные ошибки. они в консоль то сыпятся что значит нестандартные?

kronos_vano17:10:23

эксепшены я подозреваю

kronos_vano17:10:27

в stderr сыпятся

prepor17:10:33

эксепшены все нужно ловить и засовывать в логгер

prepor17:10:02

что и так делают, например, все веб-сервера

pacman17:10:58

да вот jetty до этого использовал и в нем апликуху гонял как uberwar, так он это все дело ловил и в свои логи складывал

pacman17:10:31

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

pacman17:10:16

@kronos_vano: это поток перенаправить через командную строку?

pacman17:10:18

или как

pacman17:10:25

пример можно?

pacman17:10:30

@prepor: конечно же я имел в виду екзешены, ну которые по той или иной причине не смог отловить в коде

kronos_vano17:10:57

да это переправлять поток, это просто временно решение, в конце концов тебе придется сделать по-правильному

prepor17:10:18

> дело в том что от всех ошибок не перестрахуешься почему это?

pacman17:10:41

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

prepor18:10:47

ну у тебя всегда есть некоторый топ-левел в который можно (нужно) вставить логирование ошибок. + треды скажем стартовать с враппером на трайкетч

prepor18:10:16

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

dottedmag18:10:51

@prepor: Если только какая-нибудь имеющаяся поебень уже не предоставляет топ-левел, где нет такого логирования.

dottedmag18:10:02

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

prepor18:10:08

не припомню поебеней в яве таких

prepor18:10:04

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

pacman18:10:43

@kronos_vano: Хааа.... нашел в скрипте запуска томката

pacman18:10:45

shift touch "$CATALINA_OUT" if [ "$1" = "-security" ] ; then if [ $have_tty -eq 1 ]; then echo "Using Security Manager" fi shift eval "\"$RUNJAVA\"" "\"$LOGGINGCONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \ -Djava.endorsed.dirs="\"$JAVA_ENDORSED_DIRS\"" -classpath "\"$CLASSPATH\"" \ -Djava.security.manager \ -Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\"" \ -Dcatalina.base="\"$CATALINA_BASE\"" \ -Dcatalina.home="\"$CATALINA_HOME\"" \ -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \ org.apache.catalina.startup.Bootstrap "$@" start \ >> "$CATALINA_OUT" 2>&1 "&"

pacman18:10:07

они таки используют 2>&1

pacman18:10:17

When running Tomcat on unixes, the console output is usually redirected to the file named catalina.out. The name is configurable using an environment variable. (See the startup scripts). Whatever is written to System.err/out will be caught into that file. That may include:

pacman18:10:24

это из док по кашаку

pacman18:10:37

так что если уж в кашаке это используется то и нам не грех

prepor19:10:46

ну у тебя ж сама ява может вывалиться или там память кончиться, куда-то то это надо писать ) это не значит, что так эксепшены нужно ловить внутри аппы

pacman19:10:35

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

dottedmag19:10:31

За пределами джавы exception - это просто набор буковок, а пока внутри - полноценный объект.