前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >泥瓦匠 Java 工作技巧 0520

泥瓦匠 Java 工作技巧 0520

作者头像
二哥聊运营工具
发布2021-12-17 11:06:02
3480
发布2021-12-17 11:06:02
举报
文章被收录于专栏:程序员泥瓦匠

作者:泥瓦匠

今天给大家分享下我对 API 接口文档小结 & 应用日志链路追踪(基于 SLF4J MDC )

第一点:API 接口文档小结

API 文档的目的:

  • API 是软件系统的重要一部分,子系统之间交互协议就是 API 。那么 API 好,系统复杂度极大降低
  • 众多的 API 叠加,就是成功的系统
  • 一般性的 API :Dubbo 接口、HTTP 接口,目的是为了让业务方或者调用方更快更方便更直接的接入即可

API 文档的设计规则:

  • 提供清晰的模型 model
    • 调用地址
    • 入参
    • 出参等等
  • 简单
    • 比如入参对象,对象里面是常见整形、字符串等字段
    • 入参不要很嵌套,不要让人家用的时候不知道入参传什么
    • 让人家清晰地看到一个调用案例,就能马上写出如何调用这个接口
  • 扩展性,解耦
    • 比如一个接口搞定还是两个接口搞定
    • 如果一个接口搞定,极大的加重了这个接口的耦合性,那不要这么做

资料:

  • 《深度 | API 设计最佳实践的思考》https://mp.weixin.qq.com/s/qWrSyzJ54YEw8sLCxAEKlA
  • API Design patterns for Google Cloud https://cloud.google.com/apis/design/design_patterns

第二点:应用日志链路追踪(基于 SLF4J MDC)

这其实个小技巧。不管单应用还是分布式,当一个请求到一个应用。这个请求在这个应用的调用链路,日志链路怎么更方便的找到?即每一个会话的日志的列表

有人说:每个 log 都透传这个请求的 requesId。没错这样可以,但这样就麻烦了。

基于 SLF4J MDC,利用拦截器的方式去做,就相对来说会比较优雅。

SLF4J 工具类 MDC ,支持 logback 和 log4j,工具的作用是放一些特定的变量值到日志中。

具体操作如下:

  1. 新建日志拦截器
  2. logback 配置

通过 HandlerInterceptor 或者 Filter 一样的道理,实现日志拦截。伪代码如下:LOG_UUID 就是每次会话的日志的 UUID

代码语言:javascript
复制
public class LogInterceptor implements HandlerInterceptor {
 


 
 private final static String LOG_UUID = "logUUID";
 


 
 @Override
 
 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
 
 String logUUID = java.util.UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
 
        MDC. put(LOG_UUID, logUUID);
 


 
 return true;
 
 }
 


 
 @Override
 
 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
 
 throws Exception {
 
 // MDC删除
 
        MDC. remove(LOG_UUID);
 
 }
 
}
 

logback 里面配置:

代码语言:javascript
复制
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
 
 <pattern>
 
 %d|%thread|%X{LOG_UUID}|%-5level|%logger{65}|%msg%n
 
 </pattern>
 
 </encoder>
 

这么简单你可得到如图所示的效果:

红圈的就是调用链路了...

快去试试吧。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员泥瓦匠 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一点:API 接口文档小结
  • 第二点:应用日志链路追踪(基于 SLF4J MDC)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档