Это редактирование ответа от @kgiannakakis:
Исходный код неверен, потому что он неправильно закрывает InputStream после вызова Properties.load(InputStream)
. Из Javadocs: The specified stream remains open after this method returns.
================================
Я полагаю, что метод configure ожидает абсолютный путь. В любом случае, вы также можете сначала попытаться загрузить объект Properties:
Properties props = new Properties();
InputStream is = new FileInputStream("log4j.properties");
try {
props.load(is);
}
finally {
try {
is.close();
}
catch (Exception e) {
// ignore this exception
}
}
PropertyConfigurator.configure(props);
Если файл свойств находится в банке, вы можете сделать что-то вроде этого:
Properties props = new Properties();
InputStream is = getClass().getResourceAsStream("/log4j.properties");
try {
props.load(is);
}
finally {
try {
is.close();
}
catch (Exception e) {
// ignore this exception
}
}
PropertyConfigurator.configure(props);
Выше предполагается, что log4j.properties находится в корневой папке файла JAR.