Почему Tomcat удваивает мои строки журнала в catalina.out файле журнала?

Может быть, вы ищете что-то похожее на это? https://stackblitz.com/edit/react-snoqkt?file=index.js

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

Основные изменения в коде.

  1. Изменен вызов Api с события жизненного цикла componentDidMount на новый метод с именем getInitialdata, который вызывается в handleSubmit.

    getInitialdata(name){
     axios.get(`https://www.googleapis.com/books/v1/volumes?q=${name}`)
      .then((response) => {
        const bookExample1 = response.data.items;
        console.log(bookExample1);
        this.setState({bookTitles: bookExample1, isLoading: false, bookSubmitted: 'userSub'});
      })
      .catch((error) => {
        console.error('ERROR!', error);
        this.setState({isLoading: false, bookSubmitted: 'userSub'});
      });
    

    }

  2. Изменен способ использования дочернего компонента.

    
    

Проблема с вашим кодом заключается в том, что вы выполняете вызов API в методе didMount вашего компонента. Это событие жизненного цикла будет вызываться только при монтировании компонента. Не когда он обновляется. Когда вы вводите какие-либо данные в текстовое поле и нажимаете «Поиск книг», событие componentDidMount не запускается. И это причина того, что вызовы API не происходят со второго раза.

Подробнее о событиях жизненного цикла см. На сайте https://reactjs.org/docs/react-component.html#componentdidmount

.

5
задан Eddie 2 April 2009 в 19:34
поделиться

4 ответа

Проверьте свой log4j, чтобы удостовериться, что "Вы не удваиваете добавление" к Вашему регистратору. Ваш корневой регистратор уже имеет appender, связанный с ним и если Вы фильтруете дополнительную категорию, удостоверяются, что Вы не указываете appender, если Вы не хотите, чтобы он перешел к appender кроме корня.

<category name="org.apache.commons">
    <priority value="warn"/> 
    <!-- don't add the same appender as your root appender -->
</category>
3
ответ дан 15 December 2019 в 06:35
поделиться

Это происходит со мной, когда у меня есть 2 копии log4j.properties на пути к классу. Проверьте на несколько регистрирующихся конфигураций

0
ответ дан 15 December 2019 в 06:35
поделиться

Ваше веб-приложение log4j.properties установлено зарегистрироваться к catalina.out? Tomcat уже регистрирует события там и если бы Ваше приложение также регистрируется там, который, вероятно, объяснил бы удвоенные записи.

0
ответ дан 15 December 2019 в 06:35
поделиться

Это, скорее всего, имеет некоторое отношение к порядку, банки загружаются. На более старом проекте я шел, это произойдет все время, решение состояло в том, чтобы переупорядочить банки в "идеальном" порядке, и вещи зафиксируют себя.

Это не могли бы только быть несколько log4j, но вход свободного городского населения, slf4j, и т.д. Попытайтесь перестроить их, но не видя Вашего упорядочивания пути к классу, трудно помочь дальше.

0
ответ дан 15 December 2019 в 06:35
поделиться
Другие вопросы по тегам:

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