121 lines
3.0 KiB
Java
121 lines
3.0 KiB
Java
package com.muyu.gateway.model;
|
|
|
|
import com.muyu.common.core.utils.StringUtils;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.Builder;
|
|
import lombok.Data;
|
|
import lombok.NoArgsConstructor;
|
|
import org.apache.commons.lang3.builder.ToStringBuilder;
|
|
import org.apache.commons.lang3.builder.ToStringStyle;
|
|
import org.springframework.cloud.gateway.route.Route;
|
|
import org.springframework.http.HttpStatusCode;
|
|
import org.springframework.util.MultiValueMap;
|
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.format.DateTimeFormatter;
|
|
|
|
/**
|
|
* 网关的访问日志
|
|
*/
|
|
@Data
|
|
@Builder
|
|
@NoArgsConstructor
|
|
@AllArgsConstructor
|
|
public class AccessLog {
|
|
|
|
/**
|
|
* 链路追踪编号
|
|
*/
|
|
private String traceId;
|
|
/**
|
|
* 用户编号
|
|
*/
|
|
private String userId;
|
|
|
|
/**
|
|
* 路由
|
|
*
|
|
* 类似 ApiAccessLogCreateReqDTO 的 applicationName
|
|
*/
|
|
private Route route;
|
|
|
|
/**
|
|
* 协议
|
|
*/
|
|
private String schema;
|
|
/**
|
|
* 请求方法名
|
|
*/
|
|
private String requestMethod;
|
|
/**
|
|
* 访问地址
|
|
*/
|
|
private String requestUrl;
|
|
/**
|
|
* 查询参数
|
|
*/
|
|
private MultiValueMap<String, String> queryParams;
|
|
/**
|
|
* 请求体
|
|
*/
|
|
private String requestBody;
|
|
/**
|
|
* 请求头
|
|
*/
|
|
private MultiValueMap<String, String> requestHeaders;
|
|
/**
|
|
* 用户 IP
|
|
*/
|
|
private String userIp;
|
|
|
|
/**
|
|
* 响应体
|
|
*
|
|
* 类似 ApiAccessLogCreateReqDTO 的 resultCode + resultMsg
|
|
*/
|
|
private String responseBody;
|
|
/**
|
|
* 响应头
|
|
*/
|
|
private MultiValueMap<String, String> responseHeaders;
|
|
/**
|
|
* 响应结果
|
|
*/
|
|
private HttpStatusCode httpStatus;
|
|
|
|
/**
|
|
* 开始请求时间
|
|
*/
|
|
private LocalDateTime startTime;
|
|
/**
|
|
* 结束请求时间
|
|
*/
|
|
private LocalDateTime endTime;
|
|
/**
|
|
* 执行时长,单位:毫秒
|
|
*/
|
|
private Integer duration;
|
|
|
|
@Override
|
|
public String toString() {
|
|
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
|
|
.append("请求简略信息",
|
|
StringUtils.format("[userId:[{}]-userIp:[{}]-traceId:[{}]] ---结果--- {{}-{}}:{} ---> {}",userId, userIp, traceId, schema, requestMethod, requestUrl,httpStatus)
|
|
)
|
|
.append("路由", route)
|
|
.append("查询参数", queryParams)
|
|
.append("请求体", requestBody)
|
|
.append("请求头", requestHeaders)
|
|
.append("响应体", responseBody)
|
|
.append("响应头", responseHeaders)
|
|
.append("耗时/时间",
|
|
StringUtils.format(
|
|
"{}MS-{}-{}",
|
|
duration,
|
|
startTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")),
|
|
endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))
|
|
)
|
|
.toString();
|
|
}
|
|
}
|