конфигурация log4j с Java Web Start - PullRequest
1 голос
/ 19 ноября 2010

Наше приложение Java WebStart не включает файл конфигурации log4j; он просто настраивает некоторые жестко запрограммированные регистраторы и приложения.

Я бы хотел, чтобы отдельные клиенты могли куда-нибудь поместить файл log4j.properties и настроить свою собственную регистрацию в ситуациях устранения неполадок. Я мог бы связать файл log4j.properties в одном из файлов jar нашего приложения, и это позволило бы выполнить настройку, но тогда конфигурация была бы одинаковой для каждого клиента, а не влияла бы только на клиента, которого я хочу устранить. Кроме того, я не смог бы изменить настройки на лету.

Есть ли способ, которым я могу перехватить процедуру инициализации log4j , чтобы использовать файл конфигурации для каждого клиента?

Ответы [ 2 ]

3 голосов
/ 19 ноября 2010

Основная проблема здесь в том, что Java Web Start строго ограничивает доступ к машине.

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

Возможно, вы захотите написать свой собственный конфигуратор, который читает из файловой системы, используя Java WebStart API, а затем передает его в log4j, но для этого потребуется некоторая смазка локтя.

1 голос
/ 19 ноября 2010

Вы можете использовать PersistenceService , чтобы сохранить конфигурацию log4j на компьютере локального пользователя (работает без подписи) или, по крайней мере, сохранить флаг о том, загружать специальную конфигурацию или нет при запуске вашего веб запустить приложение.

Существует также FileOpenService, с помощью которого конечный пользователь может открыть локальный файл log4j.xml для повторной настройки средства ведения журнала на лету. Таким образом, пользователь может контролировать конфигурацию, а также когда и где ее применять.

Код вашего приложения, который использует FileOpenService для получения потока в файл конфигурации log4j, может затем использовать DOMConfigurator.configure (InputStream) для перенастройки log4j.

...