[英]centralized logging wrapper for microservices
我有 Spring Boot 微服務,我使用 sl4j 記錄器工廠,在每個服務中我記錄的消息如下:
異常期間的 LOG 錯誤:
LOG.error("service:{};msg:{};ex:{}", serviceName, msg, ex.getMessage(), ex);
驗證期間的日志錯誤:
LOG.error("service:{};msg:{}", serviceName, msg);
日志信息:
LOG.info("service:{};event:{};msg:{}", service, event, message);
這在我所有的微服務中都很常見,使用包裝器來集中這些日志消息嗎? 或者將包裝器放在單獨的 maven 應用程序中並將依賴項添加為 jar ?
我想知道最好的設計是什么,代碼片段會有所幫助。
一般來說,將關注點、領域邏輯與基礎設施分開是個好主意。
例如,如果您將服務部署為 AWS Lambda,您可以將其視為一種部署。
然后,您應該創建一個單獨的 Maven 模塊,其中僅包含您的 Lambda 處理程序的代碼。 此外,您可以擁有用於 Azure 函數或 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;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.