2013-07-08 5 views
1

Я использую log4j для входа в мое приложение. В каждом классе мне нужно войти что-то я следующее:Log4j не видит файл .properties

Properties props = new Properties(); 
    try { 
     props.load(new FileInputStream("/log4j.properties")); 
    } catch (Exception e){ 
     LOG.error(e); 
    } 
PropertyConfigurator.configure(props); 

log4j.properties помещается в папку/SRC/основные/ресурсы/

путь /log4.properties дается представление о том, копия ссылка. Когда я запускаю приложение, он показывает FileNotFoundException

+1

Не используйте 'FileInputStream', используйте файл' Class # getResourceAsStream() ', так как файл находится на пути к классам. Также вам не нужно самостоятельно загружать свойства log4j. –

+0

Если я не загружаю log4j.properties, я получаю что-то вроде «log4j no config found. Настроить log4j правильно» –

+0

Где вы помещаете файл? –

ответ

4

Не использовать FileInputStream.

java.io и его супруги работают с текущим рабочим каталогом в каталоге, из которого выполняется JVM, а не в рабочей области кода.

для иллюстрации этого рассмотрим следующий фрагмент кода

class ReadFrmFile { 
    public static void main(String args[]) { 
     FileInputStream fin = New FileInputStream("intemp.txt"); 
    } 
} 

Если код выполняется из C:\TEMP, то intemp.txt, как ожидается, будет в рабочем каталоге (C:/TEMP) в этом случае. Если это не произойдет, это вызовет FileNotFoundException. Путь имен файлов всегда является абсолютным и не относительным.

Чтобы избежать жесткого кодирования, лучшим способом было бы разместить все необходимые файлы в пути к классам и загрузить их с помощью getResourceAsStream().

Properties props = new Properties(); 
    try { 
     InputStream inStream = **YOUR_CLASS_NAME**.class.getResourceAsStream("/log4j.properties"); 
     props.load(inStream); 
    } catch (Exception e){ 
     LOG.error(e); 
    } 
    PropertyConfigurator.configure(props); 
1

log4j, по умолчанию ищет log4j.properties файла в пути к классам, так что вам не нужно использовать класс PropertyConfigurator, оны, если файл не существует в корне классам.

В Spring MVC + Log4j Integration Example, вы увидите:

enter image description here

Смежные вопросы