Конфигурация log4j через аргумент JVM?

Какие переменные мне нужно установить/передать в качестве аргументов JVM для правильной работы log4j? И правильно я имею в виду не жаловаться и печатать на консоль. Можно ли увидеть типичный пример?

Примечание. Мне нужно избегать создания файла log4j.properties в приложении.

Ответ 1

У вас есть файл конфигурации log4j? Просто используйте его с помощью

-Dlog4j.configuration={path to file}

где {путь к файлу} должен иметь префикс file:

Ответ 2

В решении используется следующий аргумент JVM:

-Dlog4j.configuration={path to file}

Если файл НЕ находится в пути к классам (в WEB-INF/classes в случае Tomcat), но где-то на вашем диске, используйте file:, например

-Dlog4j.configuration=file:C:\Users\me\log4j.xml

Дополнительная информация и примеры здесь: http://logging.apache.org/log4j/1.2/manual.html

Ответ 3

Я знаю, что это уже ответили, но, поскольку вы сказали, это не совсем то, что вы ищете, я хотел бы указать на следующую альтернативу:

Вы также можете использовать класс конфигурации вместо свойств или XML файла.

-Dlog4j.configuratorClass=com.foo.BarConfigurator

Подробнее см. http://logging.apache.org/log4j/1.2/manual.html.

Ответ 5

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

Ответ 6

Поздно к партии, так как с 2015 года Log4J 1.x достиг EOL.

Log4J 2.x вперед Параметр JVM должен быть -Dlog4j.configurationFile=<filename>


P.S. <filename> может быть файлом относительно пути класса без file:, как предложено в других ответах.