我正在尝试编写基于java的lambda函数。除了日志记录,一切正常。我在classpath中有log4j2.xml文件。
我也按照AWS Lambda LOgging in Java中的说明进行了操作。
当我触发Lambda函数时,我在日志中得到了这个。
log4j:WARN找不到logger(com.amazonaws.AmazonWebServiceClient)的appender。 log4j:WARN请正确初始化log4j系统。 log4j:WARN有关详细信息,请参阅http://logging.apache.org/log4j/1.2/faq.html#noconfig。
我用maven打包jar。 pom.xml具有以下依赖项。
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.amazon.alexa</groupId>
<artifactId>alexa-skills-kit</artifactId>
<version>${alexa.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.directory.studio</groupId>
<artifactId>org.apache.commons.io</artifactId>
<version>2.4</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-core</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-dynamodb</artifactId>
<version>1.9.40</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-log4j2</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.8.2</version>
</dependency>
我不确定我还必须做些什么来完成这项工作。
答案 0 :(得分:1)
请注意,AWS文档中有一个关于java中lambda日志记录的错误。我已经把它修复到了github,但同时看到我对另一篇文章的回答可能就是你需要的。
tldr;从.LambdaAppender
代码
packages
属性中删除<Configuration ...
答案 1 :(得分:0)
该错误消息是由类路径上的旧版Log4j(1.2.x)以某种方式生成的。 Log4j 2.x错误消息看起来不同。
请从类路径中删除Log4j 1.2.x jar。如果任何库依赖于Log4j 1.2,请添加适配器log4j-1.2-api-2.8.2.jar
。
答案 2 :(得分:0)
创建Alexa技能时-它的依赖项已经包含log4j
个组件,但是使Log4j附加器无效。将aws-lambda-java-log4j2添加到依赖项:
Maven
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-log4j2</artifactId>
<version>1.1.0</version>
</dependency>
成绩:
dependencies {
compile 'com.amazonaws:aws-lambda-java-log4j2:1.1.0'
}
错误变体
未找到log4j2配置文件。使用默认配置:仅将错误记录到控制台。将系统属性'org.apache.logging.log4j.simplelog.StatusLogger.level'设置为TRACE,以显示Log4j2内部初始化日志记录。
添加:
log4j2.xml
(在Logging reference中进行了描述)到src/main/resources
StatusLogger Log4j2找不到日志记录实现。请将log4j-core添加到类路径。使用SimpleLogger登录到控制台
添加(与现有依赖项中的版本相同):
dependencies {
compile 'com.amazonaws:aws-lambda-java-core:1.2.0'
compile 'org.apache.logging.log4j:log4j-core:2.8.2’
}
未找到log4j2配置文件。使用默认配置:仅将错误记录到控制台。将系统属性'org.apache.logging.log4j.simplelog.StatusLogger.level'设置为TRACE,以显示Log4j2内部初始化日志记录。
添加:
log4j2.xml
(如上所述)到src/main/resources
错误处理元素Lambda([Appenders:null]):CLASS_NOT_FOUND 无法找到记录器配置“ root”的附加程序“ Lambda”
添加:
dependencies {
compile 'com.amazonaws:aws-lambda-java-log4j2:1.1.0'
}