Micronaut AWS Lambda日志未显示在Cloudfront中

时间:2019-10-21 16:08:07

标签: java logging aws-lambda micronaut

我设置了一个micronaut java aws lambda项目,如下所示: https://guides.micronaut.io/micronaut-function-aws-lambda/guide/index.html

在Function类的主函数中,我有一个示例:

System.out.println("LOG TEST LOG LOG");

如文档所述通过

在本地运行
echo '{"param1": "23"}' | java -jar build/lib/myjar-full.jar

正确显示控制台输出。

在AWS lambda中在线运行相同功能,不会将该消息记录在cloudwatch日志中。

如Micronaut文档中所述,同样的问题也会通过SAM CLI在本地运行。

也使用slf4j记录器,仍然没有得到输出。 我在下面提供了我的micronaut lambda函数的所有相关代码

package lambda.test;

import io.micronaut.function.executor.FunctionInitializer;
import io.micronaut.function.FunctionBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.lang.invoke.MethodHandles;
import java.util.function.Function;

@FunctionBean("example-lambda")
public class LambdaFunction extends FunctionInitializer implements Function<Request, Response> {
    private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass().getSimpleName());


    /**
     * This main method allows running the function as a CLI application using: echo '{}' | java -jar function.jar
     * where the argument to echo is the JSON to be parsed.
     */
    public static void main(String... args) throws IOException {
        System.out.println("LOG TEST LOG LOG");
        logger.info(String.format("Received the following payload: %s", String.join(";", args)));
        LambdaFunction function = new LambdaFunction();
        function.run(args, (context) -> function.apply(context.get(Request.class)));
    }

我还在资源中创建了log4j2.xml配置文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
    <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="INFO">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

micronaut随附的默认logback.xml配置具有以下内容:

<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <withJansi>true</withJansi>
        <!-- encoders are assigned the type
             ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
        <encoder>
            <pattern>%cyan(%d{HH:mm:ss.SSS}) %gray([%thread]) %highlight(%-5level) %magenta(%logger{36}) - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="error">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

两种尝试登录的方法均无法在线使用或与SAM CLI一起使用。 我仍在研究如何执行此操作,但到目前为止,我在其文档或其他地方找不到任何信息。

0 个答案:

没有答案