SLF4J регистрирует сообщения об ошибках на информационном уровне - PullRequest
4 голосов
/ 23 января 2012

У меня странная проблема. У меня есть класс, который использовал Log4j, и я мог сделать что-то вроде:

LOGGER.log(Level.SEVERE, "This is a message");

И я получу вывод примерно так:

SEVERE: Это сообщение

Я заменил его на регистратор SLF4J для согласованности с остальной частью приложения:

LOGGER.error("This is a message.");

Но теперь это логирование на уровне INFO:

INFO: 2012-01-23 16: 50: 43,306 [http-thread-pool-8080 (3)] ОШИБКА com.mycompany.MyClass - Это сообщение

Я ожидал, что это будет зарегистрировано на уровне ОШИБКИ (SLF4J, похоже, не имеет уровней выше этого).

Есть идеи, что происходит? Это по умолчанию? Приложение довольно сложное, поэтому я не удивлюсь, если это где-то изменилось, но где я могу найти это, чтобы изменить его обратно?

Я использую Glassfish, на случай, если это может быть связано.

Ответы [ 2 ]

4 голосов
/ 23 января 2012

вам нужно, чтобы ваш SLF4J использовал бэкэнд Java Util Logging.Это то, что Glassfish использует внутри.Поскольку он этого не использует, он выводит данные на консоль, и GF сообщает обо всем на консоли как INFO.

Так что подключите адаптер JUL, и у вас все будет хорошо.

1 голос
/ 23 января 2012

без списка конфигурации для регистрации это только предположение.но я думаю, что структура ведения журнала, вероятно, неправильно настроена.slf4j регистрирует на уровне ОШИБКИ:

ERROR com.mycompany.MyClass - This is a message

, затем этот вывод отправляется в консоль, которая перенаправляется в общий файл журнала на уровне INFO с помощью glassfish.

в предыдущей настройке, вероятно, использовалось ведение журнала Glassfish, непосредственно наследуяего конфигурация.после переключения на slf4j конфиг не был найден, поэтому все отправляется на консоль, а затем на server.log

...