问题描述
基于这个关于记录 AWSRequestId 的 guide,我可以在我的 logback.xml 上添加 %X{AWSRequestId}
以在我的 lambda 函数上打印请求 ID。
在示例中,在 MDC 上添加此键的方法是类 populateMappingDiagnosticContextValues
的 MicronautRequestHandler
。但是由于我的 lambda 函数有两个端点,所以我将它创建为 Application 类型,它说它使用 MicronautLambdaHandler
作为处理程序类。
我所做的是创建了扩展 MicronautLambdaHandler
的自定义处理程序并添加了 populateMappingDiagnosticContextValues
方法。
@Override
public AwsProxyResponse handleRequest(AwsProxyRequest input,Context context) {
if (context != null) {
populateMappingDiagnosticContextValues(context);
}
return handler.proxy(input,context);
}
logback.xml
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<withJansi>false</withJansi>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %X{AWSRequestId} %-5p %c{1} - %m%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT" />
</root>
</configuration>
在 lambda 设置中,我将处理程序指向我的自定义处理程序,应用程序正在运行。
除了日志没有显示 AWSRequestId。
此功能是否仅适用于 MicronautRequestHandler
类而不适用于 MicronautLambdaHandler
?
我还尝试了 aws guide 此处使用 log4j2 记录请求 ID。但是在构建 GraalVM 原生镜像时 log4j 不起作用,这就是我坚持使用 logback 的原因。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)