Я написал проект веб-службы с использованием 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
Ответы:
Я знаю, что немного поздно отвечать на этот вопрос, и, возможно, вы уже нашли решение, но я публикую решение, которое я нашел (после того, как много погуглил), поэтому это может немного помочь:
-Dlog4j.debug
@ в конце ваших java-параметров tomcatНадеюсь, это поможет.
Rgds
источник
Как уже говорилось, log4j.properties должен находиться в каталоге, включенном в classpath, я хочу добавить, что в проекте mavenized хорошее место может быть
src/main/resources/log4j.properties
источник
Вы можете указать расположение файла конфигурации с помощью аргумента виртуальной машины -Dlog4j.configuration = "file: / C: /workspace3/local/log4j.properties"
источник
log4j.configurationFile
Вы должны поместить его в корневой каталог, который соответствует вашему контексту выполнения.
Пример:
Если вы начинаете выполнение из другого проекта, вам необходимо, чтобы этот файл в проекте использовался для запуска выполнения. Например, если другой проект содержит несколько тестов JUnit, ему также необходим файл log4j.properties.
Я предлагаю использовать log4j.xml вместо log4j.properties. У вас есть больше возможностей, помощь от вашей IDE и так далее ...
источник
Для проекта на основе Maven сохраните свой log4j.properties в src / main / resources. Больше нечего делать!
источник
Если вы поместите log4j.properties внутри src, вам не нужно использовать оператор -
Он будет взят автоматически, поскольку файл свойств находится в пути к классам.
источник
Пытаться:
источник
Файл должен находиться в каталоге WEB-INF / classes. Эта структура каталогов должна быть упакована в файл войны.
источник
Моя IDE - это NetBeans. Я кладу файл log4j.property как показано на картинках
корень
Web
WEB-INF
Чтобы использовать это свойство файла Вам необходимо написать следующий код:
Вы можете определить статический контекст ServletContext из другого файла JSP. Пример:
Теперь вы можете использовать файл log4j.property в своих проектах.
источник
Уже предоставлено несколько технически правильных конкретных ответов, но в целом он может быть в любом месте пути к классам во время выполнения, то есть везде, где классы ищет JVM.
Это может быть каталог / src в Eclipse или каталог WEB-INF / classes в развернутом приложении, но лучше знать о концепции пути к классам и о том, почему файл помещен в него, а не просто обрабатывать WEB-INF / классы как «волшебный» справочник.
источник
Я потратил много времени, чтобы выяснить, почему файл log4j.properties не отображается .
Затем я заметил, что он был виден для проекта только тогда, когда он был в папках MyProject / target / classes / и MyProject / src / main / resources .
Надеюсь, это будет кому-нибудь полезно.
PS: Проект был основан на maven.
источник
Я обнаружил, что Glassfish по умолчанию смотрит на [место установки Glassfish] \ glassfish \ domains [ваш домен] \ как рабочий каталог по умолчанию ... вы можете поместить файл log4j.properties в это место и инициализировать его в своем коде с помощью PropertyConfigurator как упоминалось ранее ...
источник
Я не знаю, что это правильный способ, но он решил мою проблему. поместите файл log4j.properties в «папку проекта» / config и используйте PropertyConfigurator.configure («config // log4j.properties»);
он будет работать с IDE, но не при самостоятельном запуске файла jar. когда вы запускаете файл jar самостоятельно, просто скопируйте файл log4j.properties в папку, в которой находится файл jar. когда файл jar и файл свойств в том же каталоге, он работает нормально.
источник
Поместите log4j.properties в путь к классам. Вот 2 случая, которые помогут вам определить правильное местоположение: 1. Для веб-приложения classpath - это / WEB-INF / classes.
Для тестирования из основного / модульного теста путь к классам - это исходный каталог
источник
Есть много способов сделать это:
Way1: если вы пытаетесь использовать проект maven без использования PropertyConfigurator
Во-первых: проверьте каталог ресурсов в scr / main
следует на скриншоте:
Way2: Если вы пытаетесь использовать файл свойств для проекта java / maven, используйте PropertyConfigurator
Поместите файл свойств в любом месте проекта и укажите правильный путь. скажем: src / javaLog4jProperties / log4j.properties
статическая {
}
Way3: если вы пытаетесь использовать xml в проекте java / maven, используйте DOMConfigurator
Поместите файл свойств в любом месте проекта и укажите правильный путь. скажем: src / javaLog4jProperties / log4j.xml
статическая {
}
источник
Стандартная настройка вашего проекта будет иметь примерно такую структуру:
Вы помещаете log4j.properties в папку ресурсов, вы можете создать папку ресурсов, если она не существует
источник
На самом деле, я только что столкнулся с этой проблемой в стандартной структуре проекта Java следующим образом:
В Eclipse мне нужно добавить папку res для создания пути, однако в Intellij мне нужно пометить папку res как resouces, как показывает связанный снимок экрана: щелкните правой кнопкой мыши папку res и отметьте как ресурсы .
источник
Вам не нужно указывать
PropertyConfigurator.configure("log4j.properties");
в своем классе Log4J, если вы уже определили log4j.properties в структуре своего проекта.В случае веб-динамического проекта: -
Вам нужно сохранить свой log4j.properties в разделе WebContent -> WEB-INF -> log4j.properties.
Надеюсь, это поможет вам.
источник