log4j версии 1.x:
Как уже говорилось, log4j ищет первый файл конфигурации в пути к классам. См: http://logging.apache.org/log4j/1.2/manual.html
Но когда оба «log4j.xml» и файлы «log4j.properties» в пути к классам, кажется, из экспериментов, что log4j отдает предпочтение «log4j.xml» над «log4j.properties».
В. Прежде всего, log4j, похоже, выглядит в пути к первому файлу log4j.xml. Если их нет, тогда log4j, похоже, будет выглядеть в пути к первому файлу log4j.properties.
Копирование и вставка из кода ниже, может помочь в определении того, что используется файл конфигурации:
import org.apache.log4j.Logger;
public class TestLog4j
{
static
{
System.out.println("Classpath: [" + System.getProperty("java.class.path") + "]");
System.out.println("Found logging configuration files:");
System.out.println(" log4j.xml: " + Logger.getRootLogger().getClass().getResource("/log4j.xml"));
System.out.println(" log4j.properties: " + Logger.getRootLogger().getClass().getResource("/log4j.properties"));
}
public static void main(String[] args)
{
System.out.println("main():");
}
}
Edit:
log4j версии 2.x:
порядок поиска конфигурационного файла по умолчанию задокументирован здесь: http://logging.apache.org/log4j/2.x/manual/configuration.html
т. Е. Для версии log4j 2.x, если не найден файл конфигурации с более высоким приоритетом (например, log4j2-test. [свойства | yaml | json | xml]), то файл log4j2.properties используется, если найден в пути к классам. Обратите внимание, что log4j2.xml имеет самый низкий приоритет и будет использоваться, только если файлы конфигурации log4j2 'properties', 'yaml' или 'json' не найдены.
Примечание: Чтобы помочь в отладке проблем с конфигурацией log4j, задайте свойство 'log4j.debug', например. с:
java -Dlog4j.debug ...
Смотрите также:How to initialize log4j properly?
У меня есть конкретное требование Если я хочу, чтобы загрузить как файл свойств, как я могу achive это? Я имею в виду файлы log4j.properties из a.jar и b.jar, должны быть загружены ... Есть ли способ? – Gourabp
Зачем вам загружать их обои? Цель экстернализации конфигурации в файл - это возможность настроить ведение журнала так, как вы хотите. Поэтому файлы jar не должны даже поставляться с файлом log4j.xml.Вместо этого они должны документировать, какие регистраторы они используют (по соглашению, имя регистратора - это имя класса), а затем ассемблер приложения, используя оба файла jar, создаст свой собственный файл конфигурации, содержащий конфигурацию для всех библиотек, используемых в заявление. –
Я хочу загрузить их оба из-за того, что я пишу клиент api, где я хочу записывать конкретные журналы клиента api в отдельный файл. приложение может иметь собственный конфигуратор log4j, но я не хочу, чтобы клиентская сторона что-то изменила. Я просто дам им api jar, где будет определен конкретный appender и logger api. Также обратите внимание, что я не хочу его программно программировать, я хочу сделать это по конфигурации. – Gourabp