Ошибка при использовании SLF4J. to load class org.slf4j.impl.StaticLoggerBinder и log4j:WARN No appenders could be found for решение для регистратора
один:Ошибка при использовании SLF4J. to load class org.slf4j.impl.StaticLoggerBinder
Описание проблемы
При использовании журналов мы всегда использовали три пакета slf4j-api, slf4j-log4j12 и log4j в сочетании. Мы создали новый проект, а затем создали основной метод для запуска теста. Потом я нашел ошибку.
Failed to load class org.slf4j.impl.StaticLoggerBinder
Перейдите на официальный сайт SLF4J, чтобы проверить причину этой ошибки и сделать вывод:
Не удалось загрузить класс org.slf4j.impl.StaticLoggerBinder
Это предупреждающее сообщение появляется, когда класс org.slf4j.impl.StaticLoggerBinder не может быть загружен в память. . Это происходит, если в пути к классам не найдена подходящая привязка SLF4J. Поместите slf4j-nop.jar в путь к классам. slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar или Один (и только один) файл logback-classic.jar должен помочь.
SLF4J версии 1.6 с версии 1.6.0 С тех пор, без привязки, SLF4J по умолчанию будет использовать реализацию безоперационного регистратора (NOP).
Если вы несете ответственность за упаковку своего приложения и не заботитесь о журналировании,Тогда добавление slf4j-nop.jar в путь к классам вашего приложения избавит вас от этого предупреждающего сообщения. пожалуйста, обрати внимание,Встроенные компоненты (такие как библиотеки или платформы) не должны объявлять зависимости от каких-либо привязок SLF4J.,Но зависит только от slf4j-api. Когда библиотека объявляет зависимость времени компиляции от привязок SLF4J.,Это наложит эту привязку на конечного пользователя.,Тем самым сводя на нет цель SLF4J.
в общем,Просто не хватаетslf4j-log4j12.jar
Эта зависимость,Но мой проект Maven,Я почти уверен, что добавил этот пакет,Но почему все еще идет не так?
Позже я обнаружил проблему. Мои зависимости следующие:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.log4j.version}</version>
<scope>test</scope>
</dependency>
Потому что я установил диапазон для проверки,То есть только в тестовой среде,можно использовать,И яmain
Запуск непосредственно в методе,Значит, он не относится к тестовой среде,Таким образом, этот пакет эквивалентен отсутствию добавления зависимостей. Позже изменено на:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.log4j.version}</version>
<scope>compile</scope>
</dependency>
#############
# log4j.rootLogger Категория и уровень вывода журнала: выводить только информацию журнала не ниже этого уровня DEBUG < INFO < WARN < ERROR < FATAL
# ВНИМАНИЕ: уровень журнала КОНСОЛЬ: имя, определяемое местом вывода. файл журнала: имя, определяемое местоположением вывода
log4j.rootLogger=INFO,CONSOLE,logfile
# Настройте вывод CONSOLE на консоль
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
# Настройте КОНСОЛЬ в режим пользовательского макета.
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
# Настройте формат вывода журналов КОНСОЛИ. 2019-08-22 22:52:12,000 %r занимает миллисекунды %pПриоритет журнала %tимя потока Имя класса, которому принадлежит %C, обычно является полным именем класса. %L номер строки в коде NDC связан с потоком %x %млог %nРазрыв строки
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} - %-4r %-5p [%t] %C:%L %x - %m%n
################
# Вывод в файл журнала
################
# Настроить вывод файла журнала в файл Новый файл журнала создается, когда размер файла достигает указанного размера.
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
# Сохранить формат кодировки
log4j.appender.logfile.Encoding=UTF-8
# Выходной файл находится в папке журналов в корневом каталоге проекта.
log4j.appender.logfile.File=C:\\Users\\durant.zeng\\Desktop\\2.8.0\\logs\\mylo.log
# Суффикс может быть КБ, МБ, ГБ. После достижения этого размера создайте новый файл журнала.
log4j.appender.logfile.MaxFileSize=10MB
# Установите максимальный размер перемещаемого файла на 3. Это означает, что можно создать четыре файла журнала: root.log.1, root.log.2, root.log.3 и root.log.
log4j.appender.logfile.MaxBackupIndex=3
# Настроить файл журнала как режим пользовательского макета
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n
##########################
# Вывод разных файлов журналов для разных классов
##########################
# Журналы пакета club.bagedate выводятся отдельно.
log4j.logger.club.bagedate=DEBUG,bagedate
# Если установлено значение false, информация журнала не будет добавлена в rootLogger.
log4j.additivity.club.bagedate=false
# Следующая конфигурация аналогична приведенной выше.
log4j.appender.bagedate=org.apache.log4j.RollingFileAppender
log4j.appender.bagedate.Encoding=UTF-8
log4j.appender.bagedate.File=C:\\Users\\kaigejava\\Desktop\\2.8.0\\logs\\mylo.log
log4j.appender.bagedate.MaxFileSize=10MB
log4j.appender.bagedate.MaxBackupIndex=3
log4j.appender.bagedate.layout=org.apache.log4j.PatternLayout
log4j.appender.bagedate.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n