Не найдены приложения для регистратора (log4j)?

370

Я поместил log4j в путь сборки, но при запуске приложения я получаю следующее сообщение:

log4j:WARN No appenders could be found for logger (dao.hsqlmanager).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

Что означают эти предупреждения? Что здесь за аппендант?

Максимус
источник
5
Это кажется предупреждением во время выполнения. Вы уверены, что видите это при компиляции?
Маб
5
Вы пытались посетить URL в последней строке предупреждений?
Джеспер
4
да!!! но это мало что говорит ... Я обнаружил, что мне нужен файл свойств для настройки моего appender!
Максим
Вручную отредактируйте файлы конфигурации, чтобы добавить приложение. Убедитесь, что у вас есть правильный и действительный документ конфигурации.
Роман С

Ответы:

465

Это краткое введение в log4j руководство немного устарело, но все еще действует.

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


Просто чтобы начать, у вас есть два простых подхода.

Во-первых, просто добавьте эту строку в ваш основной метод:

BasicConfigurator.configure();

Второй подход заключается в добавлении этого стандартного log4j.properties(взятого из вышеупомянутого руководства) файла в ваш путь к классам:

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
Maba
источник
3
Просто первый шаг в порядке. Цитата из краткого введения в руководство по log4j
ray6080
65
Для новых встреч ... добавьте файл log4j.properties в src / main / resources, и это предполагает, что у вас есть проект maven. Материал в src / main / resources включен в путь к классам.
Кени
3
В IntelliJ идея откройте настройки модуля, выберите папку ресурсов и нажмите ресурсы, она автоматически добавит каждый ваш ресурс в путь к классам.
Вакас
1
Не помогло Я использую Eclipse Neon для C ++, и я поместил log4j.properties вместе с исполняемым файлом eclipse и не помог
Nadav B
log4j.rootLogger=DEBUG, A1это линия, которую я пропускал все время.
Мухаммед Фейсал
74

Похоже, вам нужно добавить местоположение вашего log4j.propertiesфайла в Classpath в Eclipse.

Убедитесь, что ваш проект открыт в Eclipse, затем нажмите на меню «Выполнить» в верхней части Eclipse и выберите следующее:

  1. Запустить
  2. Запустить конфигурации
  3. Classpath (вкладка)
  4. Записи пользователя
  5. Дополнительно (кнопка справа)
  6. Добавить папки
  7. затем перейдите в папку, в которой находится файл log4j.properties
  8. Применять
  9. Запустить

Сообщение об ошибке больше не должно появляться.

JDJ
источник
Предупреждающие сообщения не появляются, но журналы не записываются в нужном месте
Arpan Saini
48

Быстрое решение:

  1. добавить код в основную функцию :

    String log4jConfPath = "/path/to/log4j.properties";
    PropertyConfigurator.configure(log4jConfPath);
  2. создайте файл с именем log4j.properties в / path / to

    log4j.rootLogger=INFO, stdout
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.out
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
lancerex
источник
Поместите файл log4j.properties в каталог ресурсов, например, src / test / resource
Alok
Чтобы избежать явного объявления пути log4j.properties; поместите его в папку вашего проекта и получите доступ к нему как String log4jConfPath = System.getProperty ("user.dir") + File.separator + "log4j.properties";
Амимо Беня
36

Это всего лишь предупреждение.

Крепежная

Это происходит, когда файлы конфигурации по умолчанию log4j.propertiesиlog4j.xml не могут быть найдены и приложение выполняет никакой явной конфигурации.

Чтобы это исправить, просто создайте / скопируйте log4j.propertiesили log4j.xmlукажите местоположение на пути к классам (обычно такое же, как у файлов jar).

По желанию можно указать вариант Java: -Dlog4j.configuration=file:///path/to/log4j.properties.

log4jиспользуется Thread.getContextClassLoader().getResource()для поиска файлов конфигурации по умолчанию и не проверяет файловую систему напрямую. Знание подходящего места для размещения log4j.propertiesили log4j.xmlтребует понимания стратегии поиска используемого загрузчика классов. log4jне предоставляет конфигурацию по умолчанию, так как вывод в консоль или в файловую систему может быть запрещен в некоторых средах.

Отладка

Для отладки вы можете попробовать использовать -Dlog4j.debug=true параметр.

Конфигурация log4j.properties

Пример конфигурации log4j.properties:

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

# Print only messages of level WARN or above in the package com.foo.
log4j.logger.com.foo=WARN

Вот еще один файл конфигурации, который использует несколько приложений:

log4j.rootLogger=debug, stdout, R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log

log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

Apache Solr

Если вы используете Solr , скопируйте <solr>/example/resources/log4j.propertiesв путь на пути к классам .

Пример конфигурации log4j.propertiesот Solr выглядит так:

#  Logging level
solr.log=logs/
log4j.rootLogger=INFO, file, CONSOLE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-4r [%t] %-5p %c %x \u2013 %m%n

#- size rotation with log cleanup.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.MaxFileSize=4MB
log4j.appender.file.MaxBackupIndex=9

#- File to log to and log format
log4j.appender.file.File=${solr.log}/solr.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS}; %C; %m\n

log4j.logger.org.apache.zookeeper=WARN
log4j.logger.org.apache.hadoop=WARN

# set to INFO to enable infostream log messages
log4j.logger.org.apache.solr.update.LoggingInfoStream=OFF

Смотрите также:

kenorb
источник
13

Большинство ответов здесь предполагает, что log4j.propertiesфайл должен быть расположен в правильном месте (для проекта maven он должен находиться вsrc/main/resources )

Но для меня проблема в том, что мой log4j.propertiesнеправильно настроен. Вот пример, который работает для меня, вы можете попробовать его в первую очередь.

# Root logger option
log4j.rootLogger=INFO, stdout

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
Searene
источник
2
Тот факт, что log4j считает, что «невозможно найти файл» и «неполная спецификация в файле» - это одна и та же ошибка, тратит время.
Эд Норрис
1
Для меня это лучший ответ. Я голосую и добавил несколько объяснений в ваш ответ.
Шлебе
Лучший ответ для меня !!!
nosequeweaponer
8

Как объяснено ранее, есть 2 подхода

Во-первых, просто добавьте эту строку в ваш основной метод:

BasicConfigurator.configure();

Второй подход заключается в добавлении этого стандартного файла log4j.properties в ваш путь к классам:

При втором подходе необходимо убедиться, что файл инициализирован правильно, например.

Properties props = new Properties();
props.load(new FileInputStream("log4j property file path"));
props.setProperty("log4j.appender.File.File", "Folder where you want to store log files/" + "File Name");

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

AkashK
источник
У меня была такая же проблема, и я использовал BasicConfigurator.configure (); в методе main и теперь код выполняется правильно.
Сурабхи Пандей
7

Вы используете Loggerв своем коде для входа в сообщение. Объект Appender- это объект, добавляемый для Loggerзаписи сообщения в конкретную цель. Есть FileAppenderдля записи в текстовые файлы илиConsoleAppender для записи в консоли. Вам нужно показать свой код настройки Logger и Appender для получения дополнительной помощи.

пожалуйста, прочитайте руководство для лучшего понимания взаимодействия Logger и Appender.

симулянт
источник
6

Убедитесь, что файл свойств установлен правильно. И снова, похоже, что компилятор не может найти файл свойств, вы можете установить его в pom следующим образом (только при использовании проекта maven).

<build>
       <sourceDirectory> src/main/java</sourceDirectory>
       <testSourceDirectory> src/test/java</testSourceDirectory>
        <resources>
             <resource>
                  <directory>resources</directory>
             </resource>
        </resources>           
</build >
belvey
источник
Эта! Я потратил часы, чтобы найти ответ. Мой код дела хорошо работает в Linux, но имеет эту ошибку в Windows (то же самое NB IDE), и все вышеупомянутые решения не работают!
Tiana987642
5

Я получаю ту же ошибку. Вот проблема, которая приводит к этому сообщению об ошибке:

Я создаю несколько объектов, которые используют Logger, прежде чем настраивать log4j:

Logger.getLogger(Lang.class.getName()).debug("Loading language: " + filename);

Решение: Настройте log4j в начале в основном методе:

PropertyConfigurator.configure(xmlLog4JConfigFile); 
// or BasicConfigurator.configure(); if you dont have a config file
a3po2.0
источник
Огромное спасибо!!! Все просто предполагают Spring или Tomcat, или что-то еще для инициализации конфигурации.
Windgazer
3

Я думаю, вы должны понимать, где файл jar log4j или код Java ищет файлы конфигурации log4j.

src/main/resources/log4j.propertiesэто путь затмения. Разместите их в правильном месте, чтобы вам не приходилось жестко кодировать абсолютный путь в коде.

Прочитайте мою статью и пример решения для этого http://askyourquestions.info/2016/03/27/how-to-see-where-the-log-is-logger-in-slf4j/

Джин Тхакур
источник
3

Еще одна причина, по которой это может произойти (в RCP4), заключается в том, что в целевом файле вы используете несколько каркасов журналирования. Например, это произойдет, если вы используете комбинацию slf4j, log4j и ch.qos.logback.slf4j на вкладке содержимого целевых файлов.

ekjcfn3902039
источник
3

Добавьте следующее в качестве первого кода:

Properties prop = new Properties();
prop.setProperty("log4j.rootLogger", "WARN");
PropertyConfigurator.configure(prop);
fty4
источник
2

В моем случае ошибкой стал флаг « Аддитивность ». Если для вашего корневого пакета проекта «false», то у дочерних пакетов не будет appender, и вы увидите ошибку « appender not found ».

Антонио Мартин
источник
2

Я столкнулся с той же проблемой, когда пытался запустить тестовый класс JUnit.

Проблема устранена после того, как я вручную добавил файл log4j.properties в папку src / test / resources.

Добавление приведенного ниже кода в файл log4j.properties решило проблему:

# Root logger option
log4j.rootLogger=INFO, file, stdout

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\logging.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
Ямуна Эррагунтла
источник
1

Я столкнулся с этой проблемой при попытке создать исполняемый jar-файл с maven в intellij 12. Оказалось, что из-за того, что файл манифеста java не содержит пути к классам, файл свойств log4j не может быть найден на корневом уровне (где файл jar был выполнен из.)

К вашему сведению, я получал регистратор вот так:

Logger log = LogManager.getLogger(MyClassIWantedToLogFrom.class);

И я смог заставить его работать с файлом pom, который включал это:

         <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.2-beta-5</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath> 
                        <mainClass>com.mycompany.mainPackage.mainClass</mainClass>
                    </manifest>
                    <manifestEntries>
                        <Class-Path>.</Class-Path> <!-- need to add current directory to classpath properties files can be found -->
                    </manifestEntries>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
jmort
источник
1

Убедитесь, что ваш проект открыт в Eclipse, затем нажмите на меню «Выполнить» в верхней части Eclipse и выберите следующее:

  1. Запустить

  2. Запустить конфигурации

  3. Classpath (вкладка)

  4. Записи пользователя

  5. добавить банку справа

  6. добавить файл jar log4j

  7. Применять

  8. Запустить

Сообщение об ошибке больше не должно появляться.

Варадж Виньеш
источник
1

Причиной может быть отсутствие слова staticв некоторых:

final static Logger logging = Logger.getLogger(ProcessorTest.class);

Если я сделаю logger полем экземпляра, я получу именно это предупреждение:

No appenders could be found for logger (org.apache.kafka.producer.Sender)

Что еще хуже, предупреждение указывает не на то ProcessorTest, где находится ошибка, а на совершенно другой класс (Отправителя) как источник проблем. Этот класс имеет правильный регистратор наборов и не требует каких-либо изменений Мы могли бы искать проблему целую вечность!

Гангнус
источник
1

Я столкнулся с той же проблемой, когда я использую log4j2. Моя проблема вызвана использованием неправильной зависимой библиотеки:

<dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <scope>runtime</scope>
    </dependency>

Вместо этого я должен использовать:

<dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <scope>runtime</scope>
    </dependency>

В моем случае у меня есть log4j2.xml, определенный в моей директории "resources" и указанный для его использования:

System.setProperty("log4j.configurationFile", "log4j2.xml");
Джон Чжан
источник
1

Log4J отображает это предупреждение при поиске Java-кода Log4j для создания первой строки журнала в вашей программе.

На данный момент Log4j делает 2 вещи

  1. это поиск, чтобы найти log4j.propertiesфайл
  2. это поиск, чтобы создать экземпляр определителя в log4j.properties

Если log4Jне удается найти log4j.propertiesфайл или если Appender объявлен в log4j.rootloggerне определено вlog4j.properties файле отображается предупреждающее сообщение.

ВНИМАНИЕ: содержимое файла свойств должно быть правильным.

Следующее содержание НЕ является правильным

log4j.rootLogger=file

log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=c:/Trace/MsgStackLogging.log
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%m%n
log4j.appender.FILE.ImmediateFlush=true
log4j.appender.FILE.Threshold=debug
log4j.appender.FILE.Append=false

потому что fileappender объявлен в LOWER-CASE в log4j.rootloggerоператоре и определен в операторе log4j.appender с помощью UPPER-CASE!

Правильный файл будет

log4j.rootLogger=FILE

log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=c:/Trace/MsgStackLogging.log
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%m%n
log4j.appender.FILE.ImmediateFlush=true
log4j.appender.FILE.Threshold=debug
log4j.appender.FILE.Append=false

Если используется MAVEN, вы должны поместить файлы log4j.properties в src/main/resourcesИ запустить сборку MAVEN.

Файл log4j.properties затем копируется в target/classesпапку.

Log4J использовать найденный log4j.propertiesфайл target/classes!

schlebe
источник
1

У меня тоже была эта пробема. Я просто забыл пометить каталог ресурсов в IntelliJ IDEA

  1. Щелкните правой кнопкой мыши на вашем каталоге
  2. Отметить каталог как
  3. Корень ресурсов
Sadap
источник
1

Если вы используете Eclipse , и эта проблема появилась из ниоткуда после того, как все заранее работало нормально, попробуйте собирается Project - Clean - Clean.

stijena
источник
0

Не удалось найти мою установку Eclipse log4j.propertiesпри запуске тестов JUnit из Eclipse, хотя файл находился по адресу src/test/resources.

Причина заключалась в том, что Eclipse (или коннектор m2e ) не копировал содержимое из src/test/resourcesожидаемой выходной папки target/test-classes- основной причиной было то, что в свойствах проекта в Java Build Path -> вкладка Source -> Исходные папки на пути сборки -> src / test / resources , как-то была Excluded: **запись. Я удалил эту исключенную запись.

Кроме того, я мог бы вручную скопировать src/test/resources/log4j.propertiesв target/test-classes/log4j.properties.

Abdull
источник
0

Если log4j.propertiesон действительно находится на пути к классам, вы используете Spring Boot для создания файла WAR для развертывания на сервере приложений, вы пропускаете web.xmlфайл в пользу автоматической настройки Spring Boot и не получаете никаких сообщений журнала, вам нужно явно настроить Log4j. Предполагая, что вы используете Log4j 1.2.x:

public class AppConfig extends SpringBootServletInitializer {

    public static void main( String[] args ) {
        // Launch the application
        ConfigurableApplicationContext context = SpringApplication.run( AppConfig.class, args );
    }

    @Override
    protected SpringApplicationBuilder configure( SpringApplicationBuilder application ) {
        InputStream log4j = this.getClass().getClassLoader().getResourceAsStream("log4j.properties");
        PropertyConfigurator.configure(log4j);
        return application;
    }

// Other beans as required...
}
Брайан Шальме
источник
0

Может быть, добавить соответствующий проект, содержащий log4j в пути сборки Java, я добавляю в него mahout_h2o, когда столкнулся с этой проблемой в проекте mahout с использованием eclipse, это работает!

NightWind
источник
0

если вы работаете вместе со многими проектами, вы можете столкнуться с проблемой стиля.

* у вас должен быть один файл lof4j.properties, и этот файл включен в свойства журнала другого проекта.

* Кроме того, вы можете попытаться поместить файлы свойств log4j в путь src, когда проект работает под управлением ОС Linux, библиотеки libs другого проекта и файлы log4.properties могут находиться в одной папке в папке на пути к классам.

Ясин
источник
0

Первый импорт:

 import org.apache.log4j.PropertyConfigurator;

Затем добавьте следующий код в метод main:

String log4jConfPath ="path to/log4j.properties";
PropertyConfigurator.configure(log4jConfPath);

Создайте файл по пути к нему и добавьте приведенный ниже код в этот файл.

log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
himansug
источник
0

Решение на этом сайте работало для меня https://crunchify.com/java-how-to-configure-log4j-logger-property-correctly/ . Теперь я не вижу никаких предупреждений от log4j

Я помещаю это в файл log4j.properties, который я помещаю в src / main / resources

# This sets the global logging level and specifies the appenders
log4j.rootLogger=INFO, theConsoleAppender

# settings for the console appender
log4j.appender.theConsoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.theConsoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.theConsoleAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
ihossain
источник
0

Прежде всего: создайте файл log4j.properties

# Root logger option
log4j.rootLogger=INFO, stdout

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

Поместите его в src / main / resources /

После этого используйте следующие 2 зависимости:

<dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.5</version>
        </dependency>

Необходимо добавить эту окончательную зависимость в файл POM:

<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.1.5.RELEASE</version>
        </dependency>
nosequeweaponer
источник
0

Рассмотрим аргумент JVM log4j Dlog4j.configuration

В основном:

Добавьте аргумент JVM, который указывает на файл конфигурации log4j. Синтаксис выглядит так:

java [ options ] -jar file.jar [ arguments ]

Пример реальной командной строки выглядит так:

java -Dlog4j.configuration=conf/log4j.xml -jar myJarFile.jar myArg1 myArg2

Для пользователей IntelliJ IDE:

1.Run/Debug Configurations
2.Edit configurations...
3.VM options
4.Enter the same value also starting with "-D"

Советы:

1. Пользователи Eclipse IDE найдут эквивалентный подход

2. Для редактора конфигурации run / debug очень вероятно, что в начале времен ваш конкретный исполняемый файл отсутствовал. В зависимости от размера проекта, над которым вы сейчас работаете, может быть неприятно перемещаться по каталогам, чтобы найти его. Это меньше хлопот, если вы просто запустите / выполните файл (нажмите кнопку воспроизведения) один раз, прежде чем приступить к запуску / отладке конфигурации независимо от результата выполнения.

3. Обратите внимание на ваш рабочий каталог, относительные пути и путь к классам.

Фарлон Соуто
источник
0

Для меня причина была, по-видимому, иной, а сообщение об ошибке вводило в заблуждение.

Имея только это в моем build.gradle, он будет жаловаться на то, что slf4j отсутствует в начале журнала, но все равно регистрирует вещи, хотя и в плохом формате:

    compile 'log4j:log4j:1.2.17'

Добавление этой зависимости вызовет для меня обсуждаемое сообщение об ошибке «не найден ни один из них», хотя я определил их в src/main/java/log4j.properties:

    compile 'log4j:log4j:1.2.17'
    compile 'org.slf4j:slf4j-log4j12:1.7.25'

Наконец, добавление следующей зависимости (о которой я только догадывался, копируя ее из другого проекта) решило проблему:

    compile 'log4j:log4j:1.2.17'
    compile 'org.slf4j:slf4j-log4j12:1.7.25'
    compile 'commons-logging:commons-logging:1.2'

Я не знаю почему, но с этим это работает. Есть идеи по этому поводу?

Кира Ресари
источник