log4j:WARN Никакой appenders мог быть найден для регистратора в web.xml

String.replace() является находящимся в regexp; если Вы передадите в строке как первый аргумент, regexp, сделанный из него, не будет включать ‘g’ (глобальный) флаг. Эта опция важна, если Вы хотите заменить все происшествия строки поиска (который обычно является, что Вы хотите).

альтернатива идиома non-regexp для простой глобальной строковой замены:

function string_replace(haystack, find, sub) {
    return haystack.split(find).join(sub);
}

Это предпочтительно, где эти find строка может содержать символы, которые имеют нежелательное особое значение в regexps.

Во всяком случае, любой метод хорошо для примера в вопросе.

79
задан zb226 5 May 2017 в 10:35
поделиться

4 ответа

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

log4j.rootLogger=debug,A1
43
ответ дан 24 November 2019 в 10:17
поделиться

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

7
ответ дан 24 November 2019 в 10:17
поделиться

Я согласен с другими плакатами, что вы уже делаете это правильно. Однако в подобных ситуациях можно попытаться преобразовать $ grade в значение, которое можно использовать в качестве индекса в ассоциативном массиве, что не отличается от того, что @ ghostdog74 пытался сделать выше.

$gradeindex = (int)$grade / 10; // 10 since we want 10-19 = 1, etc..
$gradenames = array('10' => 'A+', '9' => 'A', '8' => B, ..... );

Однако, поскольку многие из них идентичны, я бы, вероятно, использовал переключатель ()

$gradeindex = (int)$grade / 10; // 10 since we want 10-19 = 1, etc..
switch ($gradeindex) {
  case 10:
  case 9:
    $gradename = 'A';
    break;
  case 8:
    $gradename = 'B';
    break;
  case 7:
    $gradename = 'C';
    break;
  default:
    $gradename = 'Failed';
}
echo $gradename;

Но, как уже говорилось, вы в основном лучше всего с вашим текущим , если утверждение.

-121--4180353-

Невозможно просто отправить данные без получения ответа с помощью HTTP. HTTP всегда идет запрос - > ответ. Даже если ответ очень короткий (как простой 200 без текста), должен быть ответ. И каждый HTTP-сокет будет ждать этого ответа.

Если вы не заботитесь об ответе, вы можете добавить процесс на сервер, который делает ваши запросы, и вы просто push ваш запрос данных на него (как служба, которая работает в фоновом режиме, проверка базы данных запросов, и всегда запуск запроса каждый раз, когда новая запись была добавлена). Это путь, что запрос выполняется асинхронно и может быть завершен сразу после добавления этого запроса в стек .

Также, как сказал Мью, клиент не является частью любого коммуникационный, которое вы делаете с php. Php является серверным языком, поэтому, когда клиент запрашивает веб-страницу (файл php), сервер выполняет этот файл (и выполняет все запросы состояний файла php), а затем возвращает результат клиенту.

-121--1420973-

Эта ошибка может возникнуть, если log4j.properties отсутствует в пути к классам.

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

18
ответ дан 24 November 2019 в 10:17
поделиться

У меня был файл 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 (). К корневому каталогу не привязано приложение по умолчанию.

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

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

29
ответ дан 24 November 2019 в 10:17
поделиться
Другие вопросы по тегам:

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