使用slf4j登录AWS Lambda

我正在使用lambda函数并用Java编写它。 当我阅读文档时,我正在查找记录Lambda函数,并且它们支持log4j – http://docs.aws.amazon.com/lambda/latest/dg/java-logging.html#java-wt-logging-using- log4j 。

我想知道我们是否可以使用Slf4j注释来使用日志记录,因为Slf4j只是一个绑定注释。 有没有人尝试过使用Slf4j之前使用lambda?

是的你可以。 只需将以下依赖项添加到项目中即可

 org.slf4j jcl-over-slf4j 1.7.25   org.slf4j slf4j-log4j12 1.7.25   com.amazonaws aws-lambda-java-log4j 1.0.0  

并在项目的/ src / main / resources /中创建正确的log4j.properties,例如

 log = . log4j.rootLogger = DEBUG, LAMBDA #Define the LAMBDA appender log4j.appender.LAMBDA=com.amazonaws.services.lambda.runtime.log4j.LambdaAppender log4j.appender.LAMBDA.layout=org.apache.log4j.PatternLayout log4j.appender.LAMBDA.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss} <%X{AWSRequestId}> %-5p %c{1}:%m%n 

只需包含以下依赖项:

  io.symphonia lambda-logging 1.0.0  

背景资料见: https : //blog.symphonia.io/a-love-letter-to-lambda-logging-974b0eb49273

jlib AWS Lambda Logback Appender允许您将SLF4J与AWS Lambda函数中的Logback一起使用。

只需添加这些依赖项:

Gradle( build.gradle

 dependencies { implementation 'org.slf4j:slf4j-api:1.8.0-beta2' runtimeOnly 'org.jlib:jlib-awslambda-logback:1.0.0' } 

Maven( pom.xml

  org.slf4j slf4j-api 1.8.0-beta2   org.jlib/groupId> jlib-awslambda-logback/artifactId> 1.0.0 runtime  

然后在日志记录配置中使用AwsLambdaAppender

示例XML配置( src / main / resources / logback.xml

    [%d{yyyy-MM-dd HH:mm:ss.SSS}] <%-36X{AWSRequestId:-request-id-not-set-by-lambda-runtime}> %-5level %logger{10} - %msg%n       

与其他解决方案不同,此Logback Appender正确处理多行日志消息,尤其是堆栈跟踪 ,并且每条消息仅生成一个 CloudWatch Logs事件。

该库还允许您在每个日志消息中包含AWS Lambda运行时提供的AWSRequestId,以便更好地跟踪。

虽然log4j2在创建超级jar时需要在构建中进行额外处理,但此解决方案开箱即用。

免责声明:我是jlib的开发者