Где я должен поместить файл log4j.properties?
Я написал проект веб-сервиса, используя 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
Ответы
Ответ 1
Я знаю, что немного поздно ответить на этот вопрос, и, возможно, вы уже нашли решение, но я отправляю решение, которое я нашел (после того, как я много сделал для googled), так что это может немного помочь:
- Поместите log4j.properties в WEB-INF\классы проекта, как упоминалось ранее в этом потоке.
- Поместите log4j-xx.jar под WEB-INF\lib
- Проверьте, загружен ли log4j: добавьте
-Dlog4j.debug
@конец ваших java-параметров tomcat
Надеюсь, это поможет.
Rgds
Ответ 2
Как уже было сказано, log4j.properties должен быть в каталоге, включенном в путь к классам, я хочу добавить, что в проекте с mavenized хорошим местом может быть src/main/resources/log4j.properties
Ответ 3
Вы можете указать расположение файла конфигурации с аргументом VM -Dlog4j.configuration = "file:/C:/workspace3/local/log4j.properties"
Ответ 4
Вы должны поместить его в корневой каталог, соответствующий вашему контексту выполнения.
Пример:
MyProject
src
MyClass.java
log4j.properties
Если вы начинаете выполнение из другого проекта, вам нужно иметь этот файл в проекте, используемом для запуска выполнения. Например, если в другом проекте содержатся некоторые тесты JUnit, он должен также иметь файл log4j.properties.
Я предлагаю использовать log4j.xml вместо log4j.properties. У вас есть больше возможностей, получите помощь от вашей среды разработки и т.д....
Ответ 5
Для проекта на основе Maven держите свои log4j.properties в src/main/resources. Больше ничего не делать!
Ответ 6
Если вы поместите log4j.properties внутри src, вам не нужно использовать оператор -
PropertyConfigurator.configure("log4j.properties");
Он будет автоматически принят, поскольку файл свойств находится в пути к классам.
Ответ 7
Try:
PropertyConfigurator.configure(getClass().getResource("/controlador/log4j.properties"));
Ответ 8
Файл должен быть расположен в каталоге WEB-INF/classes.
Эта структура каталогов должна быть упакована в файл войны.
Ответ 9
My IDE - это NetBeans. Я поместил файл log4j.property, как показано на рисунках
Корень
![project's root folder]()
Web
![web folder]()
WEB-INF
![WEB-INF folder]()
Чтобы использовать этот файл свойств, вы должны написать этот код:
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 в своих проектах.
Ответ 10
Несколько технически правильных конкретных ответов уже предоставлены, но в целом они могут быть в любом месте пути пути выполнения, т.е. везде, где JVM запрашивает классы.
Это может быть каталог /src в каталоге Eclipse или WEB-INF/classes в развернутом приложении, но лучше всего знать концепцию пути к классу и, почему файл находится в нем, не просто рассматривать WEB -INF/classes как "волшебный" каталог.
Ответ 11
Я потратил много времени, чтобы понять, почему файл log4j.properties не отображается.
Затем я заметил, что он был видимым для проекта только тогда, когда он был в папках MyProject/target/classes/ и MyProject/src/main/resources.
Надеюсь, это будет полезно кому-то.
PS: Проект был основан на maven.
Ответ 12
Я обнаружил, что 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");
Ответ 13
Я не знаю, что это правильный путь. Но он решил мою проблему.
поместите файл log4j.properties в "папку проекта" /config и используйте PropertyConfigurator.configure( "config//log4j.properties" );
он будет работать с IDE, но не при запуске файла jar.
когда вы запускаете файл jar самостоятельно, просто скопируйте файл log4j.properties в папку, в которой находится файл jar. Когда файл jar и property в том же каталоге работает хорошо.
Ответ 14
Поместите log4j.properties в путь к классам.
Вот два случая, которые помогут вам определить правильное местоположение -
1. Для веб-приложения classpath является /WEB -INF/classes.
\WEB-INF
classes\
log4j.properties
-
Для тестирования из main/unit test путь к классам является исходным каталогом
\Project\
src\
log4j.properties
Ответ 15
Если у вас есть стандартная установка Maven Project с Intellij, вы можете просто поместить файл свойств log4j в:
проект/SRC/основные/ресурсы
IntelliJ - расположение объектов log4j
Ответ 16
На самом деле, я только что столкнулся с этой проблемой в стандартной структуре Java-проекта следующим образом:
\myproject
\src
\libs
\res\log4j.properties
В Eclipse мне нужно добавить папку res для пути сборки, однако в Intellij мне нужно пометить папку res как ресурсы, как показано на связанном скриншоте: щелкните правой кнопкой мыши на папке res и отметьте как ресурсы.
Ответ 17
Есть много способов сделать это:
Способ 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.
следует за скриншотом:
![![enter image description here]()
Способ 2: Если вы пытаетесь с помощью файла свойств для проекта Java/Maven Используйте PropertyConfigurator
Разместите файл свойств в любом месте проекта и укажите правильный путь. скажем: src/javaLog4jProperties/log4j.properties
статическая {
PropertyConfigurator.configure("src/javaLog4jProperties/log4j.properties");
}
![enter image description here]()
Способ 3: Если вы пытаетесь использовать XML в проекте Java/Maven, используйте DOMConfigurator
Разместите файл свойств в любом месте проекта и укажите правильный путь. скажем: src/javaLog4jProperties/log4j.xml
статическая {
DOMConfigurator.configure("src/javaLog4jProperties/log4j.xml");
}
![enter image description here]()
Ответ 18
Вам не нужно указывать PropertyConfigurator.configure("log4j.properties");
в вашем классе Log4J, если вы уже определили свойства log4j.properties в структуре вашего проекта.
В случае веб-динамического проекта: -
Вам нужно сохранить ваши log4j.properties в WebContent → WEB-INF → log4j.properties
Я надеюсь, что это может помочь вам.