к log4j:предупредить не аппендеры может быть найдена для регистратора в интернете.XML
я уже поставил log4jConfigLocation в интернете.xml, но я все равно получаю следующее предупреждение:
log4j:WARN No appenders could be found for logger ⤦
⤥ (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.
что я пропустил?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml
</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.properties</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>suara2</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>suara2</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
13 ответов:
Если это весь файл log4j. properties, похоже,что вы никогда не создаете регистратор. Вам нужна строка типа:
log4j.rootLogger=debug,A1
у меня был log4j. properties в правильном месте в classpath и все еще получил это предупреждение со всем, что использовало его напрямую. Код, использующий log4j через commons-logging, по какой-то причине казался прекрасным.
Если у вас есть:
log4j.rootLogger=WARNменяем его на:
log4j.rootLogger=WARN, console log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.conversionPattern=%5p [%t] (%F:%L) - %m%nсогласно http://logging.apache.org/log4j/1.2/manual.html:
корневой Регистратор является анонимным, но может быть доступен с помощью Лесоруб.метод getRootLogger (). Нет приложения по умолчанию, прикрепленного к root.
это означает, что вам нужно указать какой-либо аппендер, любой аппендер, в корневой регистратор, чтобы получить ведение журнала.
добавил, что консоль приложение к rootLogger получает эту жалобу, чтобы исчезнуть.
вы можете получить эту ошибку, если
log4j.propertiesнет в classpath.Это означает, что вы должны двигаться
log4j.propertiesв папку src и установите вывод в папку bin так, чтобы во время выполненияlog4j.propertiesбудет читать из папки bin и ваша ошибка будет решена легко.
вы увидите это предупреждение, если log4j не может найти файл "log4j. properties" или "log4j.xml-куда угодно.
или, вы могли бы делать то, что я сделал, и определить регистратор до загрузки файла конфигурации журнала. Это было бы, как говорится: "поставь телегу впереди лошади."
в коде:
public static Logger logger = Logger.getLogger("RbReport");... позже
PropertyConfigurator.configure(l4j); logger = Logger.getLogger("RbReport");исправление состояло в том, чтобы инициализировать регистратор после загрузки конфигурации.
для вундеркиндов это было "положить Descarte B4 D лошадь".
Если вы хотите настроить для автономных приложений log4j, вы можете использовать BasicConfigurator. Это решение не будет хорошо для веб-приложений, таких как весенние среде.
вам нужно написать -
BasicConfigurator.configure();или
ServletContext sc = config.getServletContext(); String log4jLocation = config.getInitParameter("log4j-properties-location"); String webAppPath = sc.getRealPath("/"); String log4jProp = webAppPath + log4jLocation; PropertyConfigurator.configure(log4jProp);
Если все еще помогает, проверьте имя архива, оно должно быть точным "log4j. properties" или "log4j.xml (чувствительный к регистру), и следуйте подсказке "Ален О'Ди". Я получать ту же ошибку, но после внесения этих изменений все работает нормально. так же, как очарование :-). надеюсь, это поможет.
в моем случае решение было легко. Вам не нужно ничего объявлять в своем
web.xml.поскольку ваш проект является веб-приложением, файл конфигурации должен быть включен
WEB-INF/classesпосле развертывания. Я советую вам создать папку ресурсов Java (src/main/resources) для этого (лучшая практика). Другой подход заключается в том, чтобы поместить конфигурационный файл в вашsrc/main/java.будьте осторожны с именем файла конфигурации. Если вы используете XML, имя файла
log4j.xml, иначеlog4j.properties.
поместите эти строки в начало web.xml
<listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:/main/resources/log4j.xml</param-value> </context-param>смотрите эту ссылку для более подробной информации :http://mariemjabloun.blogspot.com/2014/04/resolved-log4jwarn-no-appenders-could.html
хорошо, я вижу много ответов и некоторые очень правильные. Однако никто не исправил мою проблему. Проблема в моем случае заключалась в том, что разрешения файловой системы UNIX имели файл log4j.properties, который я редактировал на сервере как принадлежащий root. и читается только корень. Однако веб-приложение, которое я развертывал, было в tomcat, не могло прочитать файл, поскольку tomcat работает как пользователь tomcat в системах Linux по умолчанию. Надеюсь, это поможет. поэтому решение было набрано "chown tomcat:tomcat log4j. properties" в каталоге где находится файл log4j. properties.
У меня была та же проблема . Те же параметры конфигурации и то же предупреждающее сообщение . Что работал для меня было : изменение порядка записи .
- я поставил записи для конфигурации журнала [ контекст param и слушатель ] в верхней части файла [ перед записью для applicationContext.xml ] и это сработало .
порядок имеет значение , я думаю .
добавить log4jExposeWebAppRoot - > false в вашем интернете.XML. Это работает со мной:)
<context-param> <param-name>log4jConfigLocation</param-name> <param-value>path/log4j.properties</param-value> </context-param> <context-param> <param-name>log4jExposeWebAppRoot</param-name> <param-value>false</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener>
вы можете добавить эту строку в файл XML
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">и убедитесь, что xml-файл находится в папке src
Comments