log4j: ПРЕДУПРЕЖДЕНИЕ. Не найдено ни одного добавочного файла для регистратора в файле web.xml.

Я уже поместил log4jConfigLocation в web.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>
76 голосов | спросил cometta 12 PM00000050000002731 2009, 17:24:27

12 ответов


0

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

log4j.rootLogger=debug,A1
ответил CodeGoat 12 PM00000050000002931 2009, 17:39:29
0

У меня был log4j.properties в правильном месте в пути к классам, и я все еще получал это предупреждение со всем, что использовало его напрямую. Код, использующий 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 :

  

Корневой регистратор является анонимным, но доступ к нему можно получить с помощью метода Logger.getRootLogger (). К корню не прикреплено приложение по умолчанию.

Это означает, что вам нужно указать какой-либо appender, любой appender, для корневого регистратора, чтобы включить регистрацию.

Добавление этого приложения console к rootLogger приводит к исчезновению этой жалобы.

ответил Alain O'Dea 17 J0000006Europe/Moscow 2010, 18:56:25
0

Вы можете получить эту ошибку, когда ваш log4j.properties отсутствует в пути к классам.

Это означает, что вы должны переместить log4j.properties в папку src и установить вывод в папку bin, чтобы во время выполнения ---- +: = 2 =: + ---- прочитает из папки bin, и ваша ошибка будет легко устранена.

ответил prabhat 3 FebruaryEurope/MoscowbWed, 03 Feb 2010 12:41:02 +0300000000pmWed, 03 Feb 2010 12:41:02 +030010 2010, 12:41:02
0

Вы увидите это предупреждение, если log4j нигде не может найти файл "log4j.properties" или "log4j.xml".

ответил Aaron Digulla 12 PM00000050000005931 2009, 17:32:59
0

Или, возможно, вы делаете то, что я сделал, и определяете регистратор до загрузки файла конфигурации журнала. Это было бы как говорится: «Поместить телегу перед лошадью».

В коде:

public static Logger logger = Logger.getLogger("RbReport");

... позже

PropertyConfigurator.configure(l4j);
logger = Logger.getLogger("RbReport");

Исправлена ​​ошибка, из-за которой инициализировался регистратор после загрузки конфигурации.

Для гиков это было "Ввод Декарта b4 d horse".

ответил MikeF 22 PMpFri, 22 Apr 2011 19:27:17 +040027Friday 2011, 19:27:17
0

Если вы хотите настроить автономные приложения log4j, вы можете использовать BasicConfigurator. Это решение не подойдет для веб-приложений, таких как среда Spring.

Вам нужно написать -

BasicConfigurator.configure();

или

ServletContext sc = config.getServletContext();
String log4jLocation = config.getInitParameter("log4j-properties-location");
String webAppPath = sc.getRealPath("/");
String log4jProp = webAppPath + log4jLocation;
PropertyConfigurator.configure(log4jProp);
ответил GARIMA KILLEDAR 30 +04002012-10-30T12:59:36+04:00312012bEurope/MoscowTue, 30 Oct 2012 12:59:36 +0400 2012, 12:59:36
0

Если все-таки нужна помощь, проверьте имя архива, оно должно быть точно «log4j.properties» или «log4j.xml» (с учетом регистра) и следовать подсказке «Alain O'Dea». Я получаю ту же ошибку, но после внесения этих изменений все работает нормально. просто как шарм :-). надеюсь, это поможет.

ответил Marcelo Daniel 13 MonEurope/Moscow2010-12-13T23:49:26+03:00Europe/Moscow12bEurope/MoscowMon, 13 Dec 2010 23:49:26 +0300 2010, 23:49:26
0

В моем случае решение было простым. Вам не нужно ничего указывать в своем web.xml.

Поскольку ваш проект является веб-приложением, файл конфигурации должен находиться в WEB-INF/classes после развертывания. Для этого я советую создать папку ресурсов Java (src/main/resources) (наилучшая практика). Другой подход - поместить файл конфигурации в ваш src/main/java.

Остерегайтесь с именем файла конфигурации. Если вы используете XML, имя файла будет log4j.xml, в противном случае log4j.properties

ответил jbatista 14 FebruaryEurope/MoscowbTue, 14 Feb 2012 21:31:54 +0400000000pmTue, 14 Feb 2012 21:31:54 +040012 2012, 21:31:54
0

Поместите эти строки в начало файла 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

ответил MariemJab 20 PMpSun, 20 Apr 2014 15:58:45 +040058Sunday 2014, 15:58:45
0

Хорошо, я вижу много ответов и некоторые очень правильные. Однако никто не решил мою проблему. Проблема в моем случае заключалась в том, что в разрешениях файловой системы UNIX был файл log4j.properties, который я редактировал на сервере и принадлежал пользователю root. и читается только root. Тем не менее, веб-приложение, которое я развертывал, было для tomcat, не может прочитать файл, так как tomcat по умолчанию работает как пользователь tomcat в системах Linux. Надеюсь это поможет. поэтому решением было набрать 'chown tomcat: tomcat log4j.properties' в каталоге, где находится файл log4j.properties.

ответил M The Developer 10 MarpmTue, 10 Mar 2015 19:37:32 +03002015-03-10T19:37:32+03:0007 2015, 19:37:32
0

У меня была такая же проблема. Те же настройки и то же предупреждение. Что сработало для меня:   Изменение порядка записей.

  • Я помещаю записи для конфигурации журнала [контекстный параметр и слушатель] в верхней части файла [перед записью для applicationContext.xml] и это сработало.

Порядок имеет значение, я думаю.

ответил Roshan Khandelwal 3 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 03 Sep 2014 18:11:06 +0400 2014, 18:11:06
0

Добавить log4jExposeWebAppRoot -> ложь в вашем web.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>
ответил Innet 22 FriEurope/Moscow2017-12-22T14:19:28+03:00Europe/Moscow12bEurope/MoscowFri, 22 Dec 2017 14:19:28 +0300 2017, 14:19:28

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132