Где я должен поместить файл 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);
}

}

Другие вопросы по тегам