我正在使用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>
我的第一个猜测是您缺少依赖项!
Log4j2不仅需要log4j-core,而且至少需要log4j-api。例如,看一下您好世界设置here的pom.xml的依赖项。
您是否正在使用类似slf4j的外观?如果是,那么还要添加bridge和slf4j依赖项!