我如何在Alexa技能专家项目中设置log4j2?

问题描述 投票:0回答:1

我正在使用Java开发Alexa技能来处理意图。

Java项目是一个maven项目。依赖项之一是Apache的log4j2。

这里是我上次测试的日志文件的快照。我希望亚马逊允许您下载日志。编辑:我找到了一种复制和粘贴部分日志的方法。

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配置文件。

我在src / main / resources中有一个log4j.properties文件。数量不多,但我需要的只是

log4j.rootLogger=INFO

您可以从图像中看到(希望),在22:37:48的6-8行是记录器的输出。现在,我所有的记录器输出都写为ERROR。在此“有效”期间,我希望能够将信息与实际错误区分开。

前两个记录器行是信息。第三行是一个实际错误,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>

再次编辑:为log4j-api添加pom依赖无效。

将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>
java maven log4j2
1个回答
0
投票

我的第一个猜测是您缺少依赖项!

Log4j2不仅需要log4j-core,而且至少需要log4j-api。例如,看一下您好世界设置here的pom.xml的依赖项。

您是否正在使用类似slf4j的外观?如果是,那么还要添加bridge和slf4j依赖项!

© www.soinside.com 2019 - 2024. All rights reserved.