日志输出-第二章-接口级出入参的实现

在这里插入图片描述

日志输出-第二章-接口级出入参的实现

上一章的内容为:日志输出指南

一、概述

上一章已经对日志输出的大概注意事项做了阐述,本章将介绍对应的一些统一出入参的内容

ps:仅代表个人经验嗷

一般我在使用的时候,会接入到 SkyWalking 或者是 ELK,但是不接入使用也不是不行,只是需要上服务器去抓日志文件,没那么方便。

1.1、单机时代

这个时候的出入参记录一般是分为两种粒度

  • 接口级的出入参记录
  • 方法级的出入参记录

根据不同的情况来选择不同的记录方式,以方便排查问题。

接口级:

一般是必备的,知道了请求的入参,这个时候在生产排查问题的时候,就可以通过入参来溯源,简化了排查的难度。

方法级:

一般是不会有的,主要问题在于如果你有一个比较优雅的编程习惯的话,正常情况下逻辑应该是非常清晰的。也就是说正常情况下你拿到了 Controller 的请求参数,然后去看逻辑的话应该是很简单方便的,除非是老代码,逻辑判断非常复杂各个方法耦合非常严重,才需要采用这种方式。

1.2、微服务时代

在微服务时代,由于存在多服务之间互相调用的问题,一般会在流量入口处(比如说 GateWay)多加一个日志。

也就是说这种情况下分为三种粒度:

  • 网关级的出入参记录
  • 接口级的出入参记录
  • 方法级的出入参记录

二、实现接口级出入参记录

接口级的具体实现方式一般分为三种:

  • 通过 HandlerInterceptor 的方式进行拦截
  • 通过 Spring 的切面
  • 通过 Filter

这三种的相对来说 Filter 的性能是最好的,因为它是流量的出入口,下面将采用 Nacos+Filter 来实现。

2.1、Nacos 配置类


import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

/**
 * @ClassName AutoLogConfig
 * @Author lizelin
 * @Description 日志 Nacos 动态刷新配置
 * @Date 2023/11/3 18:01
 * @Version 1.0
 */
@Data
@Configuration
@ConfigurationProperties(prefix = "auto.log")
public class AutoLogConfig {
   

    /**
     * 是否开启日志开关
     */
    private Boolean enabled = false;
    /**
     * 配置需要输出的 headers
     */
    private String[] headers;
    /**
     * 是否打印所有请求头
     */
    private Boolean printAllHeaders = false;
    /**
     * 排除前缀 Url
     */
    private String[] excludePrefixUrls;
}

yaml 不会写的话,可以参照 yaml书写指南

2.2、日志实现


import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.Ordered;
import org
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值