Проект Maven в intellij, не показывающий ошибки времени выполнения [дубликат]

Включить переменную строки подключения перед запросом MySQL. Например, $connt в этом коде:

$results = mysql_query($connt, "SELECT * FROM users");
247
задан Alexis Wilke 28 October 2015 в 11:34
поделиться

23 ответа

Это Краткое введение в руководство 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
326
ответ дан Joshua Taylor 26 August 2018 в 01:14
поделиться

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

Я создаю некоторые объекты, которые используют 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
3
ответ дан a3po2.0 26 August 2018 в 01:14
поделиться

Моя установка Eclipse не смогла найти log4j.properties при запуске тестов JUnit из Eclipse, хотя файл был расположен в src/test/resources.

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

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

0
ответ дан Abdull 26 August 2018 в 01:14
поделиться

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

2
ответ дан amartinm7 26 August 2018 в 01:14
поделиться

В java eclipse скопируйте папку conf_ref в conf.

-3
ответ дан Anuj Pandey 26 August 2018 в 01:14
поделиться

Если 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
ответ дан Brian Schalme 26 August 2018 в 01:14
поделиться

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

  1. Запустить
  2. Запустить Конфигурации
  3. Classpath (tab)
  4. Пользовательские записи
  5. добавить jar справа
  6. добавить файл журнала log4j
  7. Применить
  8. Выполнить

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

1
ответ дан David Medenjak 26 August 2018 в 01:14
поделиться

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

2
ответ дан ekjcfn3902039 26 August 2018 в 01:14
поделиться

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

src/main/resources/log4j.properties - путь Eclipse. Поместите их в нужное место, чтобы вам не пришлось жестко кодировать абсолютный путь в коде.

Прочитайте мою статью и образец решения для этого http://askyourquestions.info/2016/ 03/27 / как просматриваемых-где-лог-это-регистратор-в-SLF4J /

3
ответ дан Fabio Turati 26 August 2018 в 01:14
поделиться

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

Properties prop = new Properties();
prop.setProperty("log4j.rootLogger", "WARN");
PropertyConfigurator.configure(prop);
3
ответ дан fty4 26 August 2018 в 01:14
поделиться

В некоторых случаях может быть недостаток слова static:

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

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

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

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

1
ответ дан Gangnus 26 August 2018 в 01:14
поделиться

Как объяснялось ранее, существует 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");

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

6
ответ дан Jens 26 August 2018 в 01:14
поделиться

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

FYI Я получал регистратор следующим образом:

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>
1
ответ дан jmort 26 August 2018 в 01:14
поделиться

Я столкнулся с той же проблемой, когда я использую 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, определенный в моем " ресурсов "и указали, что использовать его:

System.setProperty("log4j.configurationFile", "log4j2.xml");
1
ответ дан John Zhang 26 August 2018 в 01:14
поделиться

Это просто предупреждение.

Исправление

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

Чтобы исправить это, просто создайте / скопируйте log4j.properties или log4j.xml в свое местоположение по пути classpath (как правило, такие же, как файлы 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 в местоположение по пути class .

Конфигурация образца 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

См. также:

25
ответ дан kenorb 26 August 2018 в 01:14
поделиться

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

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

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

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

56
ответ дан Kevin Cruijssen 26 August 2018 в 01:14
поделиться

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

  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
    
28
ответ дан lancerex 26 August 2018 в 01:14
поделиться

Возможно, добавление соответствующего проекта содержит log4j в пути сборки java, я добавляю mahout h2o в него, когда я встретил эту проблему в проекте mahout с использованием eclipse, он работает!

0
ответ дан NightWind 26 August 2018 в 01:14
поделиться

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

<build>
       <sourceDirectory> src/main/java</sourceDirectory>
       <testSourceDirectory> src/test/java</testSourceDirectory>
        <resources>
             <resource>
                  <directory>resources</directory>
             </resource>
        </resources>           
</build >
3
ответ дан Pang 26 August 2018 в 01:14
поделиться

Большинство ответов здесь предполагали, что файл 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
4
ответ дан Searene 26 August 2018 в 01:14
поделиться

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

 import org.apache.log4j.PropertyConfigurator;

Затем добавьте ниже код к основному методу:

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
0
ответ дан Shree 26 August 2018 в 01:14
поделиться

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

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

7
ответ дан Simulant 26 August 2018 в 01:14
поделиться

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

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

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

0
ответ дан yasin 26 August 2018 в 01:14
поделиться
Другие вопросы по тегам:

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