#aws-lambda #micronaut #micronaut-aws
Вопрос:
Основываясь на этом руководстве по регистрации AWSRequestId, я могу добавить %X{AWSRequestId}
logback.xml чтобы напечатать идентификатор запроса в моей лямбда-функции. В примере метод, добавляющий этот ключ в MDC populateMappingDiagnosticContextValues
, относится к классу MicronautRequestHandler
. Но так как моя функция lambda имеет две конечные точки, я создал ее как тип приложения, и в ней говорится, что она использует класс в 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>
При настройке лямбды я указал обработчик на свой пользовательский обработчик, и приложение работает.
За исключением того, что в журналах не отображается идентификатор AWSRequestId.
Работает ли эта функция только на MicronautRequestHandler
классе, а не на MicronautLambdaHandler
?
Я также попробовал здесь руководство aws, в котором используется log4j2 для регистрации идентификатора запроса. Но log4j не работает при создании собственного образа GraalVM, вот почему я придерживался логбэка.