Log4J и Java Web Start, как переключаться между разными конфигурациями? - PullRequest
0 голосов
/ 23 июля 2010

Я начинаю с Log4J и хочу иметь свойства по умолчанию log4j.properties в нашем распределенном приложении Java Web Start, которое регистрирует только ошибки и важные события.

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

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

Наши пользователи работают в среде Windows, но у них часто есть компьютер с ограниченными разрешениями, и они не могут получить доступ к Моему ПК-> Свойства -> Дополнительные параметры -> Переменные окружения (я на настроенном испанском компьютере, я не не знаю точных имен на английском).

Ответы [ 2 ]

2 голосов
/ 23 июля 2010

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

Если вы можете, вы можете определить соглашение: если в каталоге не найден файл конфигурации, используется конфигурация по умолчанию. В противном случае загружается конкретный файл конфигурации.

Это можно сделать с помощью класса PropertyConfigurator из Log4J:

File log4jConfigFile == new File(conventionLocation);
if(log4jConfigFile.isFile() && log4jConfigFile.exists()) {
    PropertyConfigurator.configure(conventionLocation);
} else {
    PropertyConfigurator.configure(defaultEmbeddedJarLocation);
}
0 голосов
/ 23 июля 2010

Прежде всего, если вы используете апплеты, вы должны использовать appender, который может писать в удаленное местоположение, чтобы вы могли фактически видеть ошибки, не находясь физически на локальной машине, на которой запущен апплет. Типы приложений . Затем вам нужно создать аппендер с порогом любого уровня, на котором вы регистрируете сообщения обычного типа «доступ». Установите макет на то, что вы хотите. Затем создайте другого приложения с уровнем, по крайней мере, уровнем, в котором вы регистрируете «ошибки», а также его собственным форматом, который соответствует вашим потребностям как «более подробный». Таким образом, когда ваш код вызывает сообщение об ошибке, он использует другой макет. Log4j довольно сложный, но не невозможный для понимания. Посмотрите документацию по на сайте log4j и промокните ноги от простого ведения журнала. После этого вы сможете изменить код, чтобы получить то, что вы хотите.

...