AWS lambda 不适用于 Log4j 2 appender
AWS lambda not working with Log4j 2 appender
我正在尝试编写一个基于 java 的 lambda 函数。除了日志记录,一切正常。我在类路径中有 log4j2.xml 文件。
我也按照AWS Lambda LOgging in Java中的说明去做了
我在触发 Lambda 函数时在日志中得到了这个。
log4j:WARN No appenders could be found for logger (com.amazonaws.AmazonWebServiceClient).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
我用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>
我不确定我还必须做些什么才能完成这项工作。
该错误消息是由位于类路径中的旧版本 Log4j (1.2.x) 以某种方式产生的。 Log4j 2.x 错误消息看起来不同。
请从类路径中删除 Log4j 1.2.x jar。如果任何库依赖于 Log4j 1.2,请添加适配器 log4j-1.2-api-2.8.2.jar
。
请注意 is/was AWS 文档中存在一个错误,用于在 java 中记录 lambda。我已将修复推送到 github,但与此同时请参阅我对另一个 post 的回答,这可能是您需要的。
tldr;从 <Configuration ...
标签的 packages
属性中删除 .LambdaAppender
见
创建 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>
Gradle:
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"
找到 appender "Lambda"
添加:
dependencies {
compile 'com.amazonaws:aws-lambda-java-log4j2:1.1.0'
}
我正在尝试编写一个基于 java 的 lambda 函数。除了日志记录,一切正常。我在类路径中有 log4j2.xml 文件。
我也按照AWS Lambda LOgging in Java中的说明去做了
我在触发 Lambda 函数时在日志中得到了这个。
log4j:WARN No appenders could be found for logger (com.amazonaws.AmazonWebServiceClient). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
我用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>
我不确定我还必须做些什么才能完成这项工作。
该错误消息是由位于类路径中的旧版本 Log4j (1.2.x) 以某种方式产生的。 Log4j 2.x 错误消息看起来不同。
请从类路径中删除 Log4j 1.2.x jar。如果任何库依赖于 Log4j 1.2,请添加适配器 log4j-1.2-api-2.8.2.jar
。
请注意 is/was AWS 文档中存在一个错误,用于在 java 中记录 lambda。我已将修复推送到 github,但与此同时请参阅我对另一个 post 的回答,这可能是您需要的。
tldr;从 <Configuration ...
标签的 packages
属性中删除 .LambdaAppender
见
创建 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>
Gradle:
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"
找到 appender "Lambda"添加:
dependencies {
compile 'com.amazonaws:aws-lambda-java-log4j2:1.1.0'
}