Добрый день.
Пытаюсь прикрутить логирование к своему учебному проекту, но не могу понять идеологию логирования в джаве.
Я как-то привык, что вот есть программа, возможно есть ее конфигурационный файл.
Программа при запуске читает опции командной строки и данные конфигурационного файла,
и зависимости от них настраивает себя, в т.ч. уровень и формат логирования.
(оставим за скобками случаи, когда уровень логирования надо менять без остановки программы).
В JUL же всё как-то странно.
1. Везде пишут, что некошерно менять уровень логирования в коде программы. Почему?
2. Предлагают настройки логгера писать в специальный файл-ресурс, который распространяется в jar.
Получается, чтобы изменить уровень логирования, нужно залезть внутрь jar и фактически изменить программу.
Ну, у меня тут аналогия с исполняемым файлом, который тоже может содержать ресурсы, изменение которых возможно,
но это необычная и нетривиальная операция.
Также пишут про возможность задать специальный параметр jvm при запуске этой самой jvm, но,
во-первых, название у параметра длинное и некрасивое,
во-вторых, если нужно поменять несколько настроек, то придется передать ооочень длинную строку параметров,
а в третьих, могут ведь быть проблемы, если в одной jvm исполняется несколько программ.
Или так не бывает ? (я краем уха слышал про сервера приложений, но еще не разбирался, что это такое).
Всё действительно так плохо, или я не понимаю чего-то?
Здравствуйте, f95.2, Вы писали:
F2>Я как-то привык, что вот есть программа, возможно есть ее конфигурационный файл. F2>Программа при запуске читает опции командной строки и данные конфигурационного файла, F2>и зависимости от них настраивает себя, в т.ч. уровень и формат логирования. F2>(оставим за скобками случаи, когда уровень логирования надо менять без остановки программы).
Все аналогично.
F2>В JUL же всё как-то странно.
JUL на помойку. Sl4j + Logback бери.
F2>1. Везде пишут, что некошерно менять уровень логирования в коде программы. Почему?
Как хочешь так и меняй.
F2>2. Предлагают настройки логгера писать в специальный файл-ресурс, который распространяется в jar.
Так часто делают, но это не значит что только так и надо.
F2>Получается, чтобы изменить уровень логирования, нужно залезть внутрь jar и фактически изменить программу. F2>Ну, у меня тут аналогия с исполняемым файлом, который тоже может содержать ресурсы, изменение которых возможно, F2>но это необычная и нетривиальная операция.
Нет, jar как и exe/dll менять не надо.
F2>Также пишут про возможность задать специальный параметр jvm при запуске этой самой jvm, но, F2>во-первых, название у параметра длинное и некрасивое, F2>во-вторых, если нужно поменять несколько настроек, то придется передать ооочень длинную строку параметров,
Внешний конфиг файл вплне рабочее решение. В jar пакуешь дефолтный (но если хочешь можно и в коде созавать).
F2>а в третьих, могут ведь быть проблемы, если в одной jvm исполняется несколько программ. F2>Или так не бывает ? (я краем уха слышал про сервера приложений, но еще не разбирался, что это такое).
Так не бываат. Ну точнее бывает да в серверах приложений, но там тоже приложения изолируются друг от друга. Если тебя волнуют параметры командной строки и тд это все тебе не надо.
F2>Всё действительно так плохо, или я не понимаю чего-то?
Все норм.