Как мне настроить log4j2 в проекте с использованием навыков Alexa? - PullRequest
0 голосов
/ 26 марта 2020

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

Проект Java - это проект maven. Одна из зависимостей находится в log4j2 Apache.

Вот снимок файла журнала из моего последнего теста. Я бы sh Amazon позволил бы вам загружать журналы. Отредактировано: я нашел способ скопировать и вставить часть журнала.

START RequestId: 5077a4b9-f3ad-49f9-9f79-0c78e443bf41 Version: $LATEST
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console. Set system property 'org.apache.logging.log4j.simplelog.StatusLogger.level' to TRACE to show Log4j2 internal initialization logging.
END RequestId: 5077a4b9-f3ad-49f9-9f79-0c78e443bf41
REPORT RequestId: 5077a4b9-f3ad-49f9-9f79-0c78e443bf41  Duration: 2117.38 ms    Billed Duration: 2200 ms    Memory Size: 512 MB Max Memory Used: 155 MB Init Duration: 3143.46 ms   
START RequestId: d3bff3f0-a270-4a02-8cbc-a2be3162741f Version: $LATEST
22:37:48.898 [main] ERROR com.ggl.bible.reader.ReadingTypeIntentHandler - Mode value: reading
22:37:48.916 [main] ERROR com.ggl.bible.reader.ReadingTypeIntentHandler - Reading decision value: reading
22:37:48.997 [main] ERROR com.ggl.bible.reader.ReadingTypeIntentHandler - Reading Decision reading not understood
END RequestId: d3bff3f0-a270-4a02-8cbc-a2be3162741f

Я не знаю, достаточно ли четкое изображение, но вторая строка говорит мне, что log4j2 не может найти Файл конфигурации log4j2.

У меня есть файл log4j.properties в src / main / resources. Это не так много, но это все, что мне нужно

log4j.rootLogger=INFO

Как вы можете видеть из изображения (я надеюсь), строки 6 - 8 в 22:37:48 являются выходными данными регистратора. На данный момент все мои выходные данные записываются как ОШИБКА. Хотя это «работает», я хотел бы иметь возможность отличить guish информацию от фактической ошибки.

Первые две строки регистратора являются информацией. Третья строка - это настоящая ошибка, когда Alexa не интерпретировал слово так, как мне бы хотелось.

Я хотел бы настроить рабочий файл свойств log4j, и я хотел бы знать, где находятся свойства файл должен быть помещен в проект Maven. Спасибо за вашу помощь.

Как и просили в комментариях, класс Java с комментариями регистратора слишком длинный для размещения в полном объеме.

Вот определение журнала.

private static Logger logger = LogManager.getLogger(ReadingTypeIntentHandler.class);

Вот несколько строк методов ведения журнала.

    if (modeValue.isPresent()) {
        logger.error("Mode value: " + modeValue.get());
    }

    if (bookValue.isPresent()) {
        logger.error("Book value: " + bookValue.get());
    }

    if (startChapterValue.isPresent()) {
        logger.error("Start chapter value: " + startChapterValue.get());
    }

Код Java работает. Сообщения появляются в файле журнала.

Моя зависимость pom здесь. Если нужно больше, скажите мне, что еще мне нужно. Maven не говорит мне, что я что-то упустил.

<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-core</artifactId>
  <version>2.8.2</version>
</dependency>

Отредактировано еще раз: Добавление зависимости pom для log4j-api не дало эффекта.

Добавление файла log4j2. xml чтобы src / main / resources избавился от «Не найден файл конфигурации log4j2». сообщение в журнале. Это был практический ответ для меня.

Вот файл log4j2. xml, который я использовал. Я надеюсь, что этот вопрос поможет будущим разработчикам навыков Alexa.

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="info">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>
...