access log 使用 responseWrapper,记录响应数据

This commit is contained in:
b2baccline
2020-07-16 18:58:24 +08:00
parent b35f4c2dc2
commit 23b56ca278
4 changed files with 49 additions and 6 deletions

View File

@@ -32,6 +32,8 @@ import java.util.Optional;
@RequiredArgsConstructor
public class AdminAccessLogHandler implements AccessLogHandler<AdminAccessLog> {
private final static String APPLICATION_JSON = "application/json";
private final AccessLogAdminSaveThread accessLogAdminSaveThread;
/**
@@ -65,6 +67,12 @@ public class AdminAccessLogHandler implements AccessLogHandler<AdminAccessLog> {
adminAccessLog.setReqBody(LogUtils.getRequestBody(request));
}
// 只记录响应头为 application/json 的返回数据
// 后台日志对于分页数据请求,不记录返回值
if (!request.getRequestURI().endsWith("/page") && response.getContentType().contains(APPLICATION_JSON)) {
adminAccessLog.setResult(LogUtils.getResponseBody(response));
}
// 如果登陆用户 则记录用户名和用户id
Optional.ofNullable(SecurityUtils.getSysUserDetails()).map(SysUserDetails::getSysUser).ifPresent(x -> {
adminAccessLog.setUserId(x.getUserId());

View File

@@ -99,6 +99,12 @@ public class AdminAccessLog extends Model<AdminAccessLog> {
@ApiModelProperty(value = "响应状态码")
private Integer httpStatus;
/**
* 响应信息
*/
@ApiModelProperty(value = "响应信息")
private String result;
/**
* 错误消息
*/