Как мне прочитать файл .properties, используя slf4j? - PullRequest
1 голос
/ 20 декабря 2011

Я пытаюсь создать простую программу, которая читает файл свойств и записывает вывод в консоль, но я не могу этого сделать.

Это мой класс:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public final class Slf4jSample {

    public static void main(final String[] args) {
        final Logger logger = LoggerFactory.getLogger(Slf4jSample.class);

        logger.info("Hello World!");
    }

    private Slf4jSample() {
    }
}

И это мой файл свойств:

log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout

log4j.logger.Slf4jSample=INFO, A1

Когда я запускаю это, он выдает следующее исключение:

log4j:WARN No appenders could be found for logger (com.slf4j.Slf4jSample).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

Ответы [ 2 ]

4 голосов
/ 21 декабря 2011

Сообщение «log4j: ПРЕДУПРЕЖДЕНИЕ Не найдено ни одного приложения ...» означает, что SLF4J был правильно связан с log4j, но log4j не смог загрузить файл log4j.properties.SLF4J не проблема здесь.Просто поместите log4j.properties на ваш путь к классу.

3 голосов
/ 21 декабря 2011

Учитывая, что вы используете slf4j с log4j в качестве базовой библиотеки журналов, и у вас есть и slf4j-log4j.jar, и log4j.jar в вашем classpath, вам необходимо указать местоположение файла log4j.properites.

Ceki упомянул, что поместил log4j.properties в ваш путь к классам, и он должен автоматически его подобрать. Если это не работает для вас (должно), или вам нужно, чтобы свойства log4j.properties существовали вне пути к классам, вы можете добавить -Dlog4j.configuration=log4j.properties к аргументам JVM при выполнении вашего кода. Значение этой переменной может быть полным путем или относительно текущего каталога, из которого вы выполняете.

Например, когда я выполняю тесты JUnit в моей IDE, я обычно добавляю это как аргумент JVM в мой профиль выполнения, чтобы убедиться, что он выбирает мой файл свойств, который не находится в моем Java-проекте (то есть не в пути к классам)

-Dlog4j.configuration=file:/C:/java/workspace/logs/log4j.properties
...