Где я должен поместить файл log4j.properties, чтобы включить ведение журнала отладки в smslib, когда он добавляется через зависимости maven?
Я делаю какой-то проект Java Maven, основанный на thucydides-jbehave-archetype.
Зависимость Smslib добавляется через maven:
<dependency>
<groupId>org.smslib</groupId>
<artifactId>smslib</artifactId>
<version>dev-SNAPSHOT</version>
</dependency>
...
<repositories>
<repository>
<id>smslib-snapshots</id>
<name>SMSLib Repository</name>
<url>http://smslib.org/maven2/snapshots/</url>
</repository>
</repositories>
Среди чистых веб-тестов я планирую сделать отправку / получение некоторых смс; sms-код помещается в пакет src / main / java / projectname / gsm (например, объекты страниц помещаются в src / main / java / projectname / pages, шаги помещаются в src/test/java/projectname.jbehave/). Я хотел бы включить сообщения отладки для smslib, но не для thucydides. Однако не было места, где log4j.properties работал для smslib, и было одно место, в результате которого появлялись сообщения отладки для thucydides.
2 ответа
Вы можете сбросить файл log4j.properties в src / main / resources.
Чтобы контролировать уровень журнала, просто создайте соответствующий файл конфигурации Log4j.
...
# Print only messages of level WARN or above in the package com.foo.
log4j.logger.com.foo=WARN
...
Для более подробной информации, пожалуйста, посмотрите руководство Log4j.
Можно ли перефразировать ваш вопрос как:
Как установить два разных уровня журнала, используя файлы свойств для log4j - используя два отдельных файла для двух классов в разных пакетах?
Если это так, то ответ Римеро - это начало. Но вместо удаления файлов свойств в src/main/sources вам необходимо удалить каждый файл (определяя другой уровень журнала) в структуре каталогов, отражающей имя пакета (например, src/main/projectname/page). Затем вы можете загрузить каждый файл свойств отдельно, используя
PropertyConfigurator.configure(URL configURL)
Есть несколько способов получить URL-адрес ваших файлов свойств, например, смотрите:
Как настроить log4j с файлом свойств
Вот полный пример:
public class TestPropertiesFile {
private static final String PREFIX = "projectname/pages";
private static final org.apache.log4j.Logger LOGGER = org.apache.log4j.Logger
.getLogger("projectname.page.SomeClass");
private static String PROPERTIES_PATH;
static {
PROPERTIES_PATH = Thread.currentThread().getContextClassLoader()
.getResource(PREFIX + "/log4j.properties").getPath();
org.apache.log4j.PropertyConfigurator.configure(PROPERTIES_PATH);
}
public static void test() {
LOGGER.info("Logging from: " + PROPERTIES_PATH);
}
}