所述文档为log4j2配置提供了一个很好的示例XML相当于默认配置文件:
<?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="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)
等效文件看起来像(有效)YAML?
我是新手,可以使用AWS Java Lambda Cloud Watch实现log4j2。我需要自定义日志,而不是云监视日志。我正在使用step函数上传一个大尺寸的csv记录,因此内置的云手表会重复记录同一件事。所以我打算用我的java lambda添加log4j2。为此,我在pom.xml中添加了以下依赖项
<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>
Run Code Online (Sandbox Code Playgroud)
然后在src / main / resources下添加log4j2.xml。log4j2.xml如下所示
<?xml version="1.0" encoding="UTF-8"?>
<Configuration packages="com.amazonaws.services.lambda.runtime.log4j2.LambdaAppender">
<Appenders>
<Lambda name="Lambda">
<PatternLayout>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %X{AWSRequestId} %-5p %c{1}:%L - %m%n</pattern>
</PatternLayout>
</Lambda>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="Lambda" />
</Root>
</Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)
之后,检查日志,我创建了一个aws java lambda项目,我的代码如下所示。
package com.amazonaws.lambda.demo;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.S3Event;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.GetObjectRequest;
import com.amazonaws.services.s3.model.S3Object;
import com.amazonaws.services.stepfunctions.AWSStepFunctions;
import com.amazonaws.services.stepfunctions.AWSStepFunctionsClientBuilder;
import com.amazonaws.services.stepfunctions.model.StartExecutionRequest;
import …Run Code Online (Sandbox Code Playgroud) java amazon-web-services amazon-cloudwatch log4j2 amazon-cloudwatchlogs
我用 Gradle 和 Kotlin DSL 构建脚本构建了一个新的 IntelliJ 项目,只有 Kotlin (Java) 和 Java 版本 10.0.2 作为项目 SDK。
我将 log4j 的依赖项添加到 build.gradle.kts 中:
compile("org.apache.logging.log4j:log4j-api:2.11.1")
compile("org.apache.logging.log4j:log4j-core:2.11.1")
Run Code Online (Sandbox Code Playgroud)
我将一个 log4j2.yaml 文件放入 /src/main/resources 并进行了一些配置。
当我现在运行这个测试程序时:
import org.apache.logging.log4j.LogManager
fun main(args: Array<String>) {
val logger = LogManager.getLogger()!!
logger.warn("Warn")
logger.info("Info")
logger.debug("Debug")
}
Run Code Online (Sandbox Code Playgroud)
我没有得到日志输出但是这条消息
ERROR StatusLogger No Log4j 2 configuration file found. Using default configuration (logging only errors to the console), or user programmatically provided configurations. Set system property 'log4j2.debug' to show Log4j 2 internal initialization logging. See https://logging.apache.org/log4j/2.x/manual/configuration.html for …Run Code Online (Sandbox Code Playgroud)