gpt4 book ai didi

logging - 使用 slf4j(和 io.symphonia :lambda-logging) in AWS Lambas)登录时,CloudWatch 输出中出现新行问题

转载 作者:行者123 更新时间:2023-12-04 14:50:14 26 4
gpt4 key购买 nike

我遇到的问题是,在 Java 中使用 slf4j(和 io.symphonia:lambda-logging)进行日志记录时,对于日志消息中的每个新行,CloudWatch 都会输出一条新的日志消息。对于使用 LOGGER.error(String msg, Throwable t) 的异常也会发生这种情况)
而且由于 CloudWatch 输出的消息未排序,并且多个消息可能来自不同的 Lambda(或其他服务等),因此日志变得不可读。

最佳答案

对此的一种解决方案是在日志记录配置中设置日志记录模式,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<configuration packages="com.amazonaws.services.lambda.runtime.log4j2">
<appender name="Lambda" class="io.symphonia.lambda.logging.DefaultConsoleAppender">
<encoder>
<pattern>%date{yyyy-MM-dd HH:mm:ss} %-5level - %logger{0}:%line: %replace(%msg){'\n','&#xd;'} %replace(%exception){'\n','&#xd;'} %nopexception %n</pattern>
</encoder>
</appender>

<root level="info">
<appender-ref ref="Lambda" />
</root>
</configuration>

<pattern>标签:神奇在 %replace(%msg){'\n','&#xd;'}%replace(%exception){'\n','&#xd;'} %nopexception .两个调用都用回车符 (\n) 替换了新行 (\n)) 用于日志消息 (%msg) 和传入的异常 (%exception)。在下面链接的 GitHub 上的对话中描述了第二个参数在 Unicode Hex Character Code 中而第一个不是的原因。
我将它放入 loggerconfig.xml 并设置记录器以在作为 lambda 入口点的类中使用它,如下所示:
private static final Logger LOGGER;

static {
// must be set before the very first call to LoggerFactory.getLogger()
System.setProperty(ContextInitializer.CONFIG_FILE_PROPERTY, "loggerconfig.xml");
LOGGER = LoggerFactory.getLogger(ClassThatShallLog.class);
}

我是通过 this 找到这个解决方案的GitHub 上的对话。

关于logging - 使用 slf4j(和 io.symphonia :lambda-logging) in AWS Lambas)登录时,CloudWatch 输出中出现新行问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53961216/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com