2015-06-01 4 views
0

Мы все знакомы с этим сообщением, когда вы не предоставите конфигурацию log4j2:Как проверить, если log4j2 настроен или не

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console. 

Как я могу проверить, если log4j2 еще не настроена так что при необходимости можно инициализировать конфигурацию по умолчанию?

ответ

0

Я в конечном итоге создать свой собственный ConfigurationFactory и зарегистрировать его с

-Dlog4j.configurationFactory 

Таким образом, ваш ConfigurationFactory будет знать, является ли это было или еще не вызывается.

0

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


Одна идея состоит в том, чтобы проверить, если log4j2.xml файл находится в пути к классам (с использованием Class.getResource), и если это не называют System.setProperty("log4j.configurationFile", pathToYourConfig). Обратите внимание, что это должно быть выполнено до перед первым вызовом API log4j2.


Альтернатива:

После того, как у вас есть LoggerContext вы можете позвонить context.setConfigLocation(configLocation) где configLocation является URI. Это заставит реконфигурировать.

+0

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

+0

Я добавил предложение. –

+0

«это должно быть сделано до первого вызова API log4j2». это слишком ограничительно. – bananasplit

Смежные вопросы