Вопрос:

Где я должен положить файл log4j.properties?

java netbeans glassfish log4j

270808 просмотра

18 ответа

681 Репутация автора

Я написал проект веб-сервиса с использованием netbeans 6.7.1 с glassfish v2.1, поместил log4j.properties в корневой каталог проекта и использовал:

static Logger logger = Logger.getLogger(MyClass.class);

в конструкторе:

PropertyConfigurator.configure("log4j.properties");

и по функциям:

logger.info("...");
logger.error("...");
// ...

но, это информация об ошибке (на самом деле, я пытался поместить ее почти в каждый каталог, который мог понять):

log4j:ERROR Could not read configuration file [log4j.properties].
java.io.FileNotFoundException: log4j.properties (The system cannot find the file specified)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:106)
        at java.io.FileInputStream.<init>(FileInputStream.java:66)
        at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:297)
        at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:315)
        at com.corp.ors.demo.OrsDemo.main(OrisDemo.java:228)
log4j:ERROR Ignoring configuration file [log4j.properties].
log4j:WARN No appenders could be found for logger (com.corp.ors.demo.OrsDemo).
log4j:WARN Please initialize the log4j system properly.

пример проекта можно получить по адресу http://www.91files.com/?N3F0QGQPWMDGPBRN0QA8

Автор: mono Источник Размещён: 28.09.2009 08:32

Ответы (18)


9 плюса

2483 Репутация автора

Файл должен находиться в каталоге WEB-INF / classes. Эта структура каталогов должна быть упакована в файл war.

Автор: Martin OConnor Размещён: 28.09.2009 08:36

25 плюса

20235 Репутация автора

Вы должны поместить его в корневой каталог, который соответствует вашему контексту выполнения.

Пример:

    MyProject
       src
           MyClass.java
           log4j.properties

Если вы начинаете выполнение из другого проекта, вам нужно, чтобы этот файл в проекте использовался для запуска выполнения. Например, если другой проект содержит несколько тестов JUnit, ему также необходимо иметь файл log4j.properties.


Я предлагаю использовать log4j.xml вместо log4j.properties. У вас есть больше вариантов, получить помощь от вашей IDE и так далее ...

Автор: KLE Размещён: 28.09.2009 08:38

26 плюса

597 Репутация автора

Вы можете указать расположение файла конфигурации с помощью аргумента VM -Dlog4j.configuration = "file: / C: /workspace3/local/log4j.properties"

Автор: Makatun Размещён: 05.03.2010 07:46

5 плюса

5776 Репутация автора

Некоторые технически правильные конкретные ответы уже предоставлены, но в общем случае они могут находиться в любом месте пути к классу времени выполнения, т. Е. Везде, где JVM ищет классы.

Это может быть каталог / src в Eclipse или каталог WEB-INF / classes в вашем развернутом приложении, но лучше знать концепцию classpath и почему в нее помещается файл, а не просто обращаться с WEB-INF / классы как «волшебный» каталог.

Автор: Brian Размещён: 05.03.2010 07:51

111 плюса

1111 Репутация автора

Я знаю, что уже поздно отвечать на этот вопрос, и, возможно, вы уже нашли решение, но я публикую сообщение о найденном мной решении (после того, как много погуглил), поэтому оно может немного помочь:

  1. Поместите log4j.properties в WEB-INF \ classes проекта, как упоминалось ранее в этой теме.
  2. Поместите log4j-xx.jar в WEB-INF \ lib
  3. Проверьте, был ли загружен log4j: добавьте -Dlog4j.debug@ конец ваших java-опций tomcat

Надеюсь, это поможет.

Rgds

Автор: miss Размещён: 19.08.2010 04:03

10 плюса

101 Репутация автора

Пытаться:

PropertyConfigurator.configure(getClass().getResource("/controlador/log4j.properties"));
Автор: Jhon M Размещён: 06.01.2011 04:45

1 плюс

3453 Репутация автора

Я не знаю, это правильный путь. Но это решило мою проблему. поместите файл log4j.properties в «папку проекта» / config и используйте PropertyConfigurator.configure («config // log4j.properties»);

он будет работать с IDE, но не при запуске файла jar самостоятельно. когда вы запускаете файл jar самостоятельно, просто скопируйте файл log4j.properties в папку, в которой находится файл jar. Когда файл jar и свойства находятся в одном каталоге, он работает хорошо.

Автор: sampathpremarathna Размещён: 31.03.2011 02:01

3 плюса

31 Репутация автора

Я обнаружил, что Glassfish по умолчанию ищет [каталог установки Glassfish] \ glassfish \ domains [ваш домен] \ как рабочий каталог по умолчанию ... вы можете удалить файл log4j.properties в этом месте и инициализировать его в своем коде с помощью PropertyConfigurator как уже упоминалось ранее ...

Properties props = System.getProperties();
System.out.println("Current working directory is " + props.getProperty("user.dir"));
PropertyConfigurator.configure("log4j.properties");
Автор: Durandal00 Размещён: 27.04.2011 07:08

41 плюса

61654 Репутация автора

Как уже говорилось, log4j.properties должен находиться в каталоге, включенном в classpath, я хочу добавить, что в проекте mavenized хорошее место может быть src/main/resources/log4j.properties

Автор: stivlo Размещён: 20.07.2011 05:20

7 плюса

3525 Репутация автора

Моя IDE - это NetBeans. Я положил файл log4j.property, как показано на картинках

корень

корневая папка проекта

Web

веб-папка

WEB-INF

Папка WEB-INF

Чтобы использовать этот файл свойств, вы должны написать этот код:

package example;

import java.io.File;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.Logger;
import javax.servlet.*;
public class test {

public static ServletContext context;
static Logger log = Logger.getLogger("example/test");

public test() {

        String homeDir = context.getRealPath("/");
        File propertiesFile = new File(homeDir, "WEB-INF/log4j.properties");
        PropertyConfigurator.configure(propertiesFile.toString());
        log.info("This is a test");
    }
}

Вы можете определить статический контекст ServletContext из другого файла JSP. Пример:

test.context = getServletContext(); 
test sample = new test(); 

Теперь вы можете использовать файл log4j.property в своих проектах.

Автор: Ali Mamedov Размещён: 07.10.2011 05:37

14 плюса

402 Репутация автора

Если вы поместите log4j.properties в src, вам не нужно использовать оператор -

PropertyConfigurator.configure("log4j.properties");

Он будет взят автоматически, поскольку файл свойств находится в пути к классам.

Автор: Ani Размещён: 08.07.2012 09:50

5 плюса

86 Репутация автора

Я потратил много времени, чтобы выяснить, почему файл log4j.properties не виден.
Затем я заметил, что он был видим для проекта только тогда, когда он находился в папках MyProject / target / classes / и MyProject / src / main / resources .
Надеюсь, это кому-нибудь пригодится.
PS: проект был основан на Maven.

Автор: RedCH Размещён: 13.08.2014 09:43

16 плюса

481 Репутация автора

Для проекта на основе Maven сохраните ваши log4j.properties в src / main / resources. Больше нечего делать!

Автор: Byorn Размещён: 30.09.2014 11:40

1 плюс

41 Репутация автора

Поместите log4j.properties в classpath. Вот два случая, которые помогут вам определить правильное местоположение: 1. Для веб-приложения classpath - это / WEB-INF / classes.

\WEB-INF      
    classes\
        log4j.properties
  1. Для тестирования из основного / модульного теста classpath является исходным каталогом

    \Project\
       src\
          log4j.properties
    
Автор: Sharif Размещён: 11.10.2017 10:30

1 плюс

9 Репутация автора

Если у вас есть стандартная установка Maven Project с Intellij, вы можете просто поместить файл свойств log4j в:

проект / SRC / основные / ресурсы

IntelliJ - расположение объектов log4j

Автор: Robert Squire Размещён: 28.03.2018 12:50

0 плюса

11 Репутация автора

На самом деле, я только что столкнулся с этой проблемой в стандартной структуре Java-проекта следующим образом:

\myproject
    \src
    \libs
    \res\log4j.properties

В Eclipse мне нужно добавить папку res для пути сборки, однако в Intellij мне нужно пометить папку res как ресурсы, как показано на связанном скриншоте: щелкните правой кнопкой мыши на папке res и отметьте как ресурсы .

Автор: Miracle Chan Размещён: 21.11.2018 08:55

0 плюса

330 Репутация автора

Есть много способов сделать это:

Способ 1: если вы пытаетесь в проекте Maven без использования PropertyConfigurator

Во-первых: проверьте каталог ресурсов на scr / main

  if available,
       then: create a .properties file and add all configuration details.
  else
       then: create a directory named resources and a file with .properties     
write your configuration code/details.

следует за скриншотом:

! [введите описание изображения здесь

Способ 2: Если вы пытаетесь с помощью файла свойств для проекта Java / Maven Используйте PropertyConfigurator

Разместите файл свойств в любом месте проекта и укажите правильный путь. скажем: src / javaLog4jProperties / log4j.properties

статическая {

 PropertyConfigurator.configure("src/javaLog4jProperties/log4j.properties");

}

введите описание изображения здесь

Способ 3: Если вы пытаетесь использовать XML в проекте Java / Maven, используйте DOMConfigurator

Разместите файл свойств в любом месте проекта и укажите правильный путь. скажем: src / javaLog4jProperties / log4j.xml

статическая {

 DOMConfigurator.configure("src/javaLog4jProperties/log4j.xml");

}

введите описание изображения здесь

Автор: Shivendra Pandey Размещён: 27.12.2018 06:14

0 плюса

1 Репутация автора

Вам не нужно указывать PropertyConfigurator.configure("log4j.properties");в своем классе Log4J, если вы уже определили свойства log4j.properties в структуре вашего проекта.

В случае веб-динамического проекта: -

Вам нужно сохранить ваши log4j.properties в WebContent -> WEB-INF -> log4j.properties

Я надеюсь, что это может помочь вам.

Автор: Manish Patel Размещён: 13.06.2019 05:03
Вопросы из категории :
32x32