Какие переменные мне нужно установить / передать в качестве аргументов JVM для правильной работы log4j? И правильно я имею в виду не пожаловаться и распечатать на консоли. Могу ли я увидеть типичный пример?
Примечание. Мне нужно избегать создания файла log4j.properties в приложении.
Решение использует следующий аргумент JVM:
-Dlog4j.configuration={path to file}
Если файл НЕ находится в classpath (в WEB-INF/classes в случае Tomcat), но где-то на вашем диске, используйте file:, например
WEB-INF/classes
file:
-Dlog4j.configuration=file:C:\Users\me\log4j.xml
Больше информации и примеров здесь: http://logging.apache.org/log4j/1.2/manual.html
У вас есть файл конфигурации log4j? Просто сослаться на это, используя
где {путь к файлу} должен начинаться с file:
Кажется, это изменилось (возможно, с log4j2) на:
-Dlog4j.configurationFile=file:C:\Users\me\log4j.xml
См .: https://logging.apache.org/log4j/2.x/manual/configuration.html
Я знаю, что на этот вопрос уже есть ответ, но поскольку вы сказали, что это не совсем то, что вы ищете, я хотел бы указать на следующую альтернативу:
Вы также можете использовать класс конфигурации вместо свойств или файла XML.
-Dlog4j.configuratorClass=com.foo.BarConfigurator
Подробнее см. http://logging.apache.org/log4j/1.2/manual.html.
Как правило, если ваш файл log4j.properties находится в пути к классам, Log4j должен просто автоматически поднять его при запуске JVM.
Поздно к вечеринке, начиная с 2015 года, Log4J 1.x достиг EOL .
Log4J 2.x и далее опция JVM должна быть -Dlog4j.configurationFile=<filename>
-Dlog4j.configurationFile=<filename>
P.S. <filename> может быть файлом относительно пути к классу без file:, как предлагается в других ответах.
<filename>
Относительный путь тоже в порядке:
java -Dlog4j.configuration=file:".\log4j.properties" -jar com.your-1.0-SNAPSHOT.jar
или
java -Dlog4j.configuration=file:".\log4j.xml" -jar com.your-1.0-SNAPSHOT.jar