gpt4 book ai didi

java - 微服务的集中式日志包装器

转载 作者:行者123 更新时间:2023-12-03 07:41:30 25 4
gpt4 key购买 nike

我有 Spring Boot 微服务,我使用 sl4j 记录器工厂,并在每个服务中记录如下消息:

异常期间的LOG错误:

LOG.error("service:{};msg:{};ex:{}", serviceName, msg, ex.getMessage(), ex);

验证期间出现 LOG 错误:
LOG.error("service:{};msg:{}", serviceName, msg);

日志信息:
LOG.info("service:{};event:{};msg:{}", service, event, message);

这在我所有的微服务中都很常见,使用包装器集中这些日志消息吗?或者将包装器放在单独的 maven 应用程序中并将依赖项添加为 jar ?

我想知道最好的设计是什么,代码片段会有所帮助。

最佳答案

一般来说,将关注点、域逻辑与基础设施分开是一个好主意。

例如,如果您将服务部署为 AWS Lambda,您可以将其视为一种部署。

然后,您应该创建一个单独的 Maven 模块,其中只有您的 Lambda 处理程序的代码所在的位置。此外,您可以拥有一个用于 Azure Function 或 Spring Boot 应用程序的模块。您可以在 Spring Context 的帮助下将它们粘合在一起。

上面提到的日志记录将成为部署模块的一部分,因为域不应该知道任何关于“服务”的信息。

如果你的错误处理很复杂,你可以为它创建一个 lib 模块。

AWS Lambda 示例:

public class Hello implements RequestHandler<Object, String> {
private DomainLogic domain;
private ErrorHandling errHandling;

Hello(DomainLogic domain, ErrorHandling errHandling) {
this.domain = domain;
this.errHandling = errHandling;
}

@Override
public String handleRequest(Object input, Context context) {
try {
return domain.sayHello(input);
}
catch (Exception e) {
errHandling.handle(e);
throw e;
}
}
}

关于java - 微服务的集中式日志包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55084927/

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