答案 0 :(得分:3)
我从Aws Lambda Java Logging了解到并在网上搜索是
Log4J的
LambdaLogger
我希望它有所帮助!
答案 1 :(得分:1)
我认为要保持简单。
1。假设您在maven中有一个应用程序项目,其中将有多个maven模块。每次调用其他模块的实现时,您都不会传递context.getLogger()或上下文参数。
2. 如果你有一个没有模块和多个类的处理函数。在这种情况下,您可以启动AWS Lambda处理程序功能代码并获取context.getLogger()以获取Lambda记录器。
了解更多信息:http://docs.aws.amazon.com/lambda/latest/dg/programming-model-v2.html
答案 2 :(得分:1)
您可能想使用一种流行的日志记录框架,例如SLF4J及其最本机的实现Logback。
jlib AWS Lambda Logback Appender允许您在AWS Lambda函数中执行此操作。
答案 3 :(得分:0)
您实际上可以将log4j与自定义lambda附加程序一起使用,以便您的日志可以转到AWS Lambda CloudWatch。请参阅https://github.com/aws/aws-lambda-java-libs/tree/master/aws-lambda-java-log4j2。
答案 4 :(得分:0)
优点:详细的报告日志
缺点:只有一级日志。比 Log4J 可配置性低
优点: 用于配置日志级别(信息、调试、错误...)的外观库。
缺点:无法将详细报告日志(请求 ID)添加到您的函数日志中
您可以通过 aws-lambda-java-log4j2
库获得两全其美
https://docs.aws.amazon.com/lambda/latest/dg/java-logging.html
在您的 src/main/resources/log4j2.xml
文件中
<Configuration status="WARN">
<Appenders>
<Lambda name="Lambda">
<PatternLayout>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %X{AWSRequestId} %-5p %c{1} - %m%n</pattern>
</PatternLayout>
</Lambda>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="Lambda"/>
</Root>
<Logger name="software.amazon.awssdk" level="WARN" />
<Logger name="software.amazon.awssdk.request" level="DEBUG" />
</Loggers>
</Configuration>
在您的build.gradle
dependencies {
// ...
runtimeOnly 'org.apache.logging.log4j:log4j-slf4j18-impl:2.13.0'
runtimeOnly 'com.amazonaws:aws-lambda-java-log4j2:1.2.0'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.6.0'
}