操作日志和访问日志记录追踪ID,方便排查问题

This commit is contained in:
b2baccline
2020-05-28 01:27:57 +08:00
parent f79cf065d4
commit c6ab664c01
19 changed files with 293 additions and 107 deletions

View File

@@ -3,10 +3,12 @@ package com.hccake.ballcat.admin.modules.conf.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hccake.ballcat.commom.log.operation.annotation.CreateOperationLogging;
import com.hccake.ballcat.commom.log.operation.annotation.DeleteOperationLogging;
import com.hccake.ballcat.commom.log.operation.annotation.UpdateOperationLogging;
import com.hccake.ballcat.common.core.result.R;
import com.hccake.ballcat.common.modules.config.model.entity.BaseConfig;
import com.hccake.ballcat.common.modules.config.service.BaseConfigService;
import com.hccake.ballcat.commom.log.operation.annotation.OperationLogging;
import com.hccake.ballcat.common.core.result.R;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
@@ -62,7 +64,7 @@ public class BaseConfigController {
* @return R
*/
@ApiOperation(value = "新增系统配置表", notes = "新增系统配置表")
@OperationLogging("新增系统配置表")
@CreateOperationLogging(msg = "新增系统配置表")
@PostMapping
@PreAuthorize("@per.hasPermission('config:baseconfig:add')")
public R save(@RequestBody BaseConfig baseConfig) {
@@ -76,7 +78,7 @@ public class BaseConfigController {
* @return R
*/
@ApiOperation(value = "修改系统配置表", notes = "修改系统配置表")
@OperationLogging("修改系统配置表")
@UpdateOperationLogging(msg = "修改系统配置表")
@PutMapping
@PreAuthorize("@per.hasPermission('config:baseconfig:edit')")
public R updateById(@RequestBody BaseConfig baseConfig) {
@@ -90,7 +92,7 @@ public class BaseConfigController {
* @return R
*/
@ApiOperation(value = "通过id删除系统配置表", notes = "通过id删除系统配置表")
@OperationLogging("通过id删除系统配置表")
@DeleteOperationLogging(msg = "通过id删除系统配置表")
@DeleteMapping("/{id}")
@PreAuthorize("@per.hasPermission('config:baseconfig:del')")
public R removeById(@PathVariable Integer id) {

View File

@@ -7,10 +7,12 @@ import com.hccake.ballcat.admin.modules.log.thread.AccessLogAdminSaveThread;
import com.hccake.ballcat.admin.oauth.SysUserDetails;
import com.hccake.ballcat.admin.oauth.util.SecurityUtils;
import com.hccake.ballcat.commom.log.access.handler.AccessLogHandler;
import com.hccake.ballcat.commom.log.constant.LogConstant;
import com.hccake.ballcat.commom.log.util.LogUtils;
import com.hccake.ballcat.common.core.util.IPUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.MDC;
import org.springframework.stereotype.Service;
import org.springframework.web.servlet.HandlerMapping;
@@ -44,6 +46,7 @@ public class AdminAccessLogHandler implements AccessLogHandler<AdminAccessLog> {
public AdminAccessLog prodLog(HttpServletRequest request, HttpServletResponse response, Long time, Throwable myThrowable) {
AdminAccessLog adminAccessLog = new AdminAccessLog()
.setTraceId(MDC.get(LogConstant.TRACE_ID))
.setCreateTime(LocalDateTime.now())
.setTime(time)
.setIp(IPUtil.getIpAddr(request))

View File

@@ -31,6 +31,11 @@ public class AdminAccessLog extends Model<AdminAccessLog> {
@TableId
@ApiModelProperty(value = "编号")
private Long id;
/**
* 追踪ID
*/
@ApiModelProperty(value="追踪ID")
private String traceId;
/**
* 用户ID
*/

View File

@@ -29,6 +29,11 @@ private static final long serialVersionUID = 1L;
@TableId
@ApiModelProperty(value="编号")
private Long id;
/**
* 追踪ID
*/
@ApiModelProperty(value="追踪ID")
private String traceId;
/**
* 日志消息
*/
@@ -50,9 +55,9 @@ private static final long serialVersionUID = 1L;
@ApiModelProperty(value="请求URI")
private String uri;
/**
* 操作方式
* 请求方法
*/
@ApiModelProperty(value="操作方式")
@ApiModelProperty(value="请求方法")
private String method;
/**
* 操作提交的数据
@@ -64,6 +69,11 @@ private static final long serialVersionUID = 1L;
*/
@ApiModelProperty(value="操作状态")
private Integer status;
/**
* 操作类型
*/
@ApiModelProperty(value="操作类型")
private Integer type;
/**
* 执行时长
*/

View File

@@ -7,7 +7,9 @@ import com.hccake.ballcat.admin.modules.sys.model.entity.SysDict;
import com.hccake.ballcat.admin.modules.sys.model.entity.SysDictItem;
import com.hccake.ballcat.admin.modules.sys.model.qo.SysDictQO;
import com.hccake.ballcat.admin.modules.sys.model.vo.DictDataAndHashVO;
import com.hccake.ballcat.commom.log.operation.annotation.OperationLogging;
import com.hccake.ballcat.commom.log.operation.annotation.CreateOperationLogging;
import com.hccake.ballcat.commom.log.operation.annotation.DeleteOperationLogging;
import com.hccake.ballcat.commom.log.operation.annotation.UpdateOperationLogging;
import com.hccake.ballcat.common.core.result.BaseResultCode;
import com.hccake.ballcat.common.core.result.R;
import io.swagger.annotations.Api;
@@ -83,7 +85,7 @@ public class SysDictController {
* @return R
*/
@ApiOperation(value = "新增字典表", notes = "新增字典表")
@OperationLogging("新增字典表")
@CreateOperationLogging(msg = "新增字典表")
@PostMapping
@PreAuthorize("@per.hasPermission('sys:dict:add')")
public R save(@RequestBody SysDict sysDict) {
@@ -98,7 +100,7 @@ public class SysDictController {
* @return R
*/
@ApiOperation(value = "修改字典表", notes = "修改字典表")
@OperationLogging("修改字典表")
@UpdateOperationLogging(msg = "修改字典表")
@PutMapping
@PreAuthorize("@per.hasPermission('sys:dict:edit')")
public R updateById(@RequestBody SysDict sysDict) {
@@ -113,7 +115,7 @@ public class SysDictController {
* @return R
*/
@ApiOperation(value = "通过id删除字典表", notes = "通过id删除字典表")
@OperationLogging("通过id删除字典表")
@DeleteOperationLogging(msg = "通过id删除字典表")
@DeleteMapping("/{id}")
@PreAuthorize("@per.hasPermission('sys:dict:del')")
public R removeById(@PathVariable Integer id) {
@@ -144,7 +146,7 @@ public class SysDictController {
* @return R
*/
@ApiOperation(value = "新增字典项", notes = "新增字典项")
@OperationLogging("新增字典项")
@CreateOperationLogging(msg = "新增字典项")
@PostMapping("item")
@PreAuthorize("@per.hasPermission('sys:dict:add')")
public R saveItem(@RequestBody SysDictItem sysDictItem) {
@@ -159,7 +161,7 @@ public class SysDictController {
* @return R
*/
@ApiOperation(value = "修改字典项", notes = "修改字典项")
@OperationLogging("修改字典项")
@UpdateOperationLogging(msg = "修改字典项")
@PutMapping("item")
@PreAuthorize("@per.hasPermission('sys:dict:edit')")
public R updateItemById(@RequestBody SysDictItem sysDictItem) {
@@ -174,7 +176,7 @@ public class SysDictController {
* @return R
*/
@ApiOperation(value = "通过id删除字典项", notes = "通过id删除字典项")
@OperationLogging("通过id删除字典项")
@DeleteOperationLogging(msg = "通过id删除字典项")
@DeleteMapping("/item/{id}")
@PreAuthorize("@per.hasPermission('sys:dict:del')")
public R removeItemById(@PathVariable Integer id) {

View File

@@ -10,7 +10,9 @@ import com.hccake.ballcat.admin.modules.sys.model.vo.Router;
import com.hccake.ballcat.admin.modules.sys.service.SysPermissionService;
import com.hccake.ballcat.admin.oauth.SysUserDetails;
import com.hccake.ballcat.admin.oauth.util.SecurityUtils;
import com.hccake.ballcat.commom.log.operation.annotation.OperationLogging;
import com.hccake.ballcat.commom.log.operation.annotation.CreateOperationLogging;
import com.hccake.ballcat.commom.log.operation.annotation.DeleteOperationLogging;
import com.hccake.ballcat.commom.log.operation.annotation.UpdateOperationLogging;
import com.hccake.ballcat.common.core.result.R;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -93,7 +95,7 @@ public class SysPermissionController {
@ApiOperation(value = "新增权限", notes = "新增权限" )
@OperationLogging("新增权限" )
@CreateOperationLogging(msg = "新增权限" )
@PostMapping
@PreAuthorize("@per.hasPermission('sys:syspermission:add')")
public R save(@Valid @RequestBody SysPermission sysMenu) {
@@ -108,7 +110,7 @@ public class SysPermissionController {
* @return R
*/
@ApiOperation(value = "修改权限", notes = "修改权限" )
@OperationLogging("修改权限" )
@UpdateOperationLogging(msg = "修改权限" )
@PutMapping
@PreAuthorize("@per.hasPermission('sys:syspermission:edit')" )
public R update(@Valid @RequestBody SysPermission sysPermission) {
@@ -117,7 +119,7 @@ public class SysPermissionController {
@ApiOperation(value = "通过id删除权限", notes = "通过id删除权限" )
@OperationLogging("通过id删除权限" )
@DeleteOperationLogging(msg = "通过id删除权限" )
@DeleteMapping("/{id}" )
@PreAuthorize("@per.hasPermission('sys:syspermission:del')" )
public R removeById(@PathVariable Integer id) {

View File

@@ -9,7 +9,9 @@ import com.hccake.ballcat.admin.modules.sys.model.vo.PermissionVO;
import com.hccake.ballcat.admin.modules.sys.service.SysPermissionService;
import com.hccake.ballcat.admin.modules.sys.service.SysRolePermissionService;
import com.hccake.ballcat.admin.modules.sys.service.SysRoleService;
import com.hccake.ballcat.commom.log.operation.annotation.OperationLogging;
import com.hccake.ballcat.commom.log.operation.annotation.CreateOperationLogging;
import com.hccake.ballcat.commom.log.operation.annotation.DeleteOperationLogging;
import com.hccake.ballcat.commom.log.operation.annotation.UpdateOperationLogging;
import com.hccake.ballcat.common.core.result.R;
import com.hccake.ballcat.common.core.vo.SelectData;
import io.swagger.annotations.Api;
@@ -65,7 +67,7 @@ public class SysRoleController {
* @return R
*/
@ApiOperation(value = "新增系统角色", notes = "新增系统角色")
@OperationLogging("新增系统角色")
@CreateOperationLogging(msg = "新增系统角色")
@PostMapping
@PreAuthorize("@per.hasPermission('sys:sysrole:add')")
public R save(@Valid @RequestBody SysRole sysRole) {
@@ -79,7 +81,7 @@ public class SysRoleController {
* @return success/false
*/
@ApiOperation(value = "修改系统角色", notes = "修改系统角色")
@OperationLogging("修改系统角色")
@UpdateOperationLogging(msg = "修改系统角色")
@PutMapping
@PreAuthorize("@per.hasPermission('sys:sysrole:edit')")
public R update(@Valid @RequestBody SysRole role) {
@@ -94,7 +96,7 @@ public class SysRoleController {
*/
@DeleteMapping("/{id}")
@ApiOperation(value = "通过id删除系统角色", notes = "通过id删除系统角色")
@OperationLogging("通过id删除系统角色")
@DeleteOperationLogging(msg = "通过id删除系统角色")
@PreAuthorize("@per.hasPermission('sys:sysrole:del')")
public R removeById(@PathVariable Integer id) {
return R.ok(sysRoleService.removeRoleById(id));
@@ -120,7 +122,7 @@ public class SysRoleController {
*/
@PutMapping("/permission/ids/{roleId}")
@ApiOperation(value = "更新角色权限", notes = "更新角色权限")
@OperationLogging("更新角色权限")
@UpdateOperationLogging(msg = "更新角色权限")
@PreAuthorize("@per.hasPermission('sys:sysrole:grant')")
public R savePermissionIds(@PathVariable Integer roleId, @RequestBody Integer[] permissionIds) {
return R.ok(sysRolePermissionService.saveRolePermissions(roleId, permissionIds));

View File

@@ -12,7 +12,9 @@ import com.hccake.ballcat.admin.modules.sys.model.entity.SysUser;
import com.hccake.ballcat.admin.modules.sys.model.qo.SysUserQO;
import com.hccake.ballcat.admin.modules.sys.service.SysUserRoleService;
import com.hccake.ballcat.admin.modules.sys.service.SysUserService;
import com.hccake.ballcat.commom.log.operation.annotation.OperationLogging;
import com.hccake.ballcat.commom.log.operation.annotation.CreateOperationLogging;
import com.hccake.ballcat.commom.log.operation.annotation.DeleteOperationLogging;
import com.hccake.ballcat.commom.log.operation.annotation.UpdateOperationLogging;
import com.hccake.ballcat.common.core.result.BaseResultCode;
import com.hccake.ballcat.common.core.result.R;
import com.hccake.ballcat.common.core.result.SystemResultCode;
@@ -90,7 +92,7 @@ public class SysUserController {
*/
@PostMapping
@ApiOperation(value = "新增系统用户", notes = "新增系统用户")
@OperationLogging("新增系统用户")
@CreateOperationLogging(msg = "新增系统用户")
@PreAuthorize("@per.hasPermission('sys:sysuser:add')")
public R addSysUser(@Valid @RequestBody SysUserDTO sysUserDto) {
@@ -111,7 +113,7 @@ public class SysUserController {
*/
@PutMapping
@ApiOperation(value = "修改系统用户", notes = "修改系统用户")
@OperationLogging("修改系统用户")
@UpdateOperationLogging(msg = "修改系统用户")
@PreAuthorize("@per.hasPermission('sys:sysuser:edit')")
public R updateUserInfo(@Valid @RequestBody SysUserDTO sysUserDto) {
return sysUserService.updateSysUser(sysUserDto) ?
@@ -127,7 +129,7 @@ public class SysUserController {
*/
@DeleteMapping("/{userId}")
@ApiOperation(value = "通过id删除系统用户", notes = "通过id删除系统用户")
@OperationLogging("通过id删除系统用户")
@DeleteOperationLogging(msg = "通过id删除系统用户")
@PreAuthorize("@per.hasPermission('sys:sysuser:del')")
public R deleteByUserId(@PathVariable Integer userId) {
return sysUserService.deleteByUserId(userId) ?
@@ -170,7 +172,7 @@ public class SysUserController {
*/
@PutMapping("/scope/{userId}")
@ApiOperation(value = "系统用户授权", notes = "系统用户授权")
@OperationLogging("系统用户授权")
@UpdateOperationLogging(msg = "系统用户授权")
@PreAuthorize("@per.hasPermission('sys:sysuser:grant')")
public R updateUserScope(@PathVariable Integer userId, @RequestBody SysUserScope sysUserScope) {
return sysUserService.updateUserScope(userId, sysUserScope) ?
@@ -188,7 +190,7 @@ public class SysUserController {
*/
@PutMapping("/pass/{userId}")
@ApiOperation(value = "修改系统用户密码", notes = "修改系统用户密码")
@OperationLogging("修改系统用户密码")
@UpdateOperationLogging(msg = "修改系统用户密码")
@PreAuthorize("@per.hasPermission('sys:sysuser:pass')")
public R updateUserPass(@PathVariable Integer userId, String pass, String confirm) {
if (StrUtil.isBlank(pass) || StrUtil.isBlank(confirm) || !pass.equals(confirm)) {
@@ -208,7 +210,7 @@ public class SysUserController {
*/
@PutMapping("/status")
@ApiOperation(value = "批量修改用户状态", notes = "批量修改用户状态")
@OperationLogging("批量修改用户状态")
@UpdateOperationLogging(msg = "批量修改用户状态")
@PreAuthorize("@per.hasPermission('sys:sysuser:edit')")
public R updateUserStatus(@NotEmpty(message = "用户ID不能为空") @RequestBody List<Integer> userIds,
@NotNull(message = "用户状态不能为空") @RequestParam Integer status) {
@@ -222,7 +224,7 @@ public class SysUserController {
@ApiOperation(value = "修改系统用户头像", notes = "修改系统用户头像")
@OperationLogging("修改系统用户头像")
@UpdateOperationLogging(msg = "修改系统用户头像")
@PreAuthorize("@per.hasPermission('sys:sysuser:edit')")
@PostMapping("/avatar")
public R<String> updateAvatar(@RequestParam("file") MultipartFile file, @RequestParam("userId") Integer userId) {

View File

@@ -17,8 +17,8 @@ public interface OperationLogConverter {
/**
* 转换OperationLog 为 OperationLogAdmin
* @param operationLogDTO
* @return
* @param operationLogDTO 操作日志DTO
* @return AdminOperationLog
*/
AdminOperationLog dtoToPo(OperationLogDTO operationLogDTO);