2011-12-20 4 views
1

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

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

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. 
+0

Пожалуйста, включите ** полный ** стек. –

+0

Являются ли необходимые банки в вашем классе? – hellectronic

+1

Это продолжение из http://stackoverflow.com/questions/8474954/read-properties-file-using-slf4j – oers

ответ

4

Сообщение «log4j: WARN No appenders found ...» указывает, что SLF4J был правильно связан с log4j, но log4j не смог загрузить файл log4j.properties. SLF4J здесь не проблема. Просто поместите log4j.properties в свой путь к классам.

3

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

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

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

-Dlog4j.configuration=file:/C:/java/workspace/logs/log4j.properties 
Смежные вопросы