如何高效开发管理后台操作日志功能,实现日志记录与查询的便捷性?

2026-04-19 11:272阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1598个文字,预计阅读时间需要7分钟。

如何高效开发管理后台操作日志功能,实现日志记录与查询的便捷性?

1. 功能分析 1.1 查询列表 1.1.1 页面效果 1.1.2 功能需求 分页查询默认查10条,每页从第1条开始查询 日志仅提供查询操作、搜索条件、日志来源 搜索来源:精准搜索 请求IP:精准搜索 点击搜索按钮是按精准搜索执行

如何高效开发管理后台操作日志功能,实现日志记录与查询的便捷性?

1.功能分析

1.1. 查询列表

1.1.1. 页面效果

1.1.2. 功能要求

  • 分页查询默认查询10条每页从第1页开始查询
  • 日志只提供查询操作
  • 搜索条件
  • 日志来源:精准搜索
  • 请求ip:精准搜索
  • 点击搜索按钮是按照录入的搜索条件进行查询数据并渲染
  • 点击重置按钮的时候清空搜索条件,并重新渲染数据

1.2.插入日志

1.2.1. 功能要求

  • 日志参数包含:请求ip,请求地址,浏览器信息(如果无则为空),请求时间,请求来源(管理后台/博客前台),请求方法,模块信息,请求参数,响应结果,响应时间,响应时长(s),方法描述,日志类型(新增/修改等等),创建时间,创建人编号(如果为客户端访问则填充ip信息),创建人名称(如果为客户端访问则填充ip信息)

1.3查看详情

1.3.1. 页面效果

1.3.2. 功能要求

  • 页面仅查看无法进行操作

2.功能实现

2.1. 初期准备

2.1.1. 创建数据库 zh_log_info

CREATE TABLE `zh_log_info` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id', `request_ip` varchar(40) DEFAULT NULL COMMENT '请求ip', `request_url` varchar(255) DEFAULT NULL COMMENT '请求地址', `request_browser` varchar(255) DEFAULT NULL COMMENT '日志请求浏览器', `request_source` varchar(40) DEFAULT NULL COMMENT '请求来源 manager管理后台 portal博客前台', `request_method` varchar(255) DEFAULT NULL COMMENT '请求方法', `request_params` text COMMENT '请求参数', `request_result` longtext COMMENT '请求响应结果', `request_start_time` datetime DEFAULT NULL COMMENT '请求开始时间', `request_end_time` datetime DEFAULT NULL COMMENT '响应时间/请求结束时间', `response_interval` bigint DEFAULT NULL COMMENT '响应时长(s)', `log_type` varchar(40) DEFAULT NULL COMMENT '日志类型(类型里面的value)', `log_identifying` varchar(40) DEFAULT NULL COMMENT '日志标识(类型里面的key)', `modual_info` varchar(100) DEFAULT NULL COMMENT '模块信息/请求模块', `method_desc` varchar(255) DEFAULT NULL COMMENT '方法描述', `method_type` varchar(255) DEFAULT NULL COMMENT '请求方法类别 GET/POST/PUT/DELETE', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `create_user_code` varchar(255) DEFAULT NULL COMMENT '创建人标识', `create_user_name` varchar(255) DEFAULT NULL COMMENT '创建人名称', PRIMARY KEY (`id`) ) ENGINE=InnoDB COMMENT='日志记录表';

2.1.2. 创建控制层LogInfoController

package com.zhuhuo.modual.controller.manager; import com.zhuhuo.modual.service.LogInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; @Controller @RequestMapping(value = "/m/logInfo") public class LogInfoController { @Autowired private LogInfoService logInfoService; }

2.1.3. 创建实体映射LogInfo

package com.zhuhuo.modual.entity; import lombok.Data; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; import javax.persistence.Table; import java.io.Serializable; import java.util.Date; import javax.persistence.Id; @Data @AllArgsConstructor @NoArgsConstructor @Table(name = "zh_log_info") public class LogInfo implements Serializable { /** * id */ @Id private Long id; /** * 请求ip */ private String requestIp; /** * 请求地址 */ private String requestUrl; /** * 日志请求浏览器 */ private String requestBrowser; /** * 请求来源 1管理后台 2博客前台 */ private Byte requestSource; /** * 请求方法 */ private String requestMethod; /** * 请求参数 */ private String requestParams; /** * 请求响应结果 */ private String requestResult; /** * 请求开始时间 */ private Date requestStartTime; /** * 响应时间/请求结束时间 */ private Date requestEndTime; /** * 响应时长(s) */ private Integer responseInterval; /** * 日志类型(类型里面的value) */ private String logType; /** * 日志标识(类型里面的key) */ private String logIdentifying; /** * 模块信息/请求模块 */ private String modualInfo; /** * 方法描述 */ private String methodDesc; /** * 请求方法类别 GET/POST/PUT/DELETE */ private String methodType; /** * 创建时间 */ private Date createTime; /** * 创建人标识 */ private String createUserCode; /** * 创建人名称 */ private String createUserName; }

2.1.4. 创建LogInfoMapper, LogInfoMapper.xml

package com.zhuhuo.modual.mapper; import com.zhuhuo.core.frame.mapper.BasicsMapper; import com.zhuhuo.modual.entity.LogInfo; public interface LogInfoMapper extends BasicsMapper<LogInfo>{ }

<resultMap id="BaseResultMap" type="com.zhuhuo.modual.entity.LogInfo"> <id column="id" property="id" jdbcType="BIGINT"/> <result column="request_ip" property="requestIp" jdbcType="VARCHAR"/> <result column="request_url" property="requestUrl" jdbcType="VARCHAR"/> <result column="request_browser" property="requestBrowser" jdbcType="VARCHAR"/> <result column="request_source" property="requestSource" jdbcType="VARCHAR"/> <result column="request_method" property="requestMethod" jdbcType="VARCHAR"/> <result column="request_params" property="requestParams" jdbcType="LONGVARCHAR"/> <result column="request_result" property="requestResult" jdbcType="VARCHAR"/> <result column="request_start_time" property="requestStartTime" jdbcType="TIMESTAMP"/> <result column="request_end_time" property="requestEndTime" jdbcType="TIMESTAMP"/> <result column="response_interval" property="responseInterval" jdbcType="BIGINT"/> <result column="log_type" property="logType" jdbcType="VARCHAR"/> <result column="log_identifying" property="logIdentifying" jdbcType="VARCHAR"/> <result column="modual_info" property="modualInfo" jdbcType="VARCHAR"/> <result column="method_desc" property="methodDesc" jdbcType="VARCHAR"/> <result column="method_type" property="methodType" jdbcType="VARCHAR"/> <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/> <result column="create_user_code" property="createUserCode" jdbcType="VARCHAR"/> <result column="create_user_name" property="createUserName" jdbcType="VARCHAR"/> </resultMap> <sql id="base_column_list"> id, request_ip, request_url, request_browser, request_source, request_method, request_params, request_result,request_start_time, request_end_time, response_interval, log_type, log_identifying, modual_info, method_desc,method_type, create_time, create_user_code, create_user_name </sql>

2.1.5. 创建LogInfoService ,LogInfoServiceImpl

package com.zhuhuo.modual.service; public interface LogInfoService { }

package com.zhuhuo.modual.service.impl; import com.zhuhuo.modual.service.LogInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service("logInfoService") public class LogInfoServiceImpl implements LogInfoService { @Autowired private LogInfoMapper logInfoMapper; }

2.1. 添加日志

2.1.1 引入依赖

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <dependency> <groupId>eu.bitwalker</groupId> <artifactId>UserAgentUtils</artifactId> <version>1.21</version> </dependency>

2.1.2 创建日志枚举LogType

@Getter @AllArgsConstructor public enum LogType { /** * 新增 */ INSERT("insert","新增"), /** * 修改 */ UPDATE("update","修改"), /** * 删除 */ DELETE("delete","删除"), /** * 查看 */ VIEW("view","查看"), /** * 默认的 */ DEFAULTS("default","默认"), ; /** * 枚举标识 */ private String code; /** * 枚举描述 */ private String desc; }

2.1.3 创建枚举LogSource

@Getter @AllArgsConstructor public enum LogSource { /** * 管理后台枚举 */ MANAGER("manager","管理后台"), /** * 博客前台枚举 */ PORTAL("portal","博客前台"); /** * 枚举标识 */ private String code; /** * 枚举描述 */ private String desc; }

2.1.4 创建注解ActionLog

package com.zhuhuo.core.logs.annotation; import com.zhuhuo.core.logs.enums.LogSource; import com.zhuhuo.core.logs.enums.LogType; import java.lang.annotation.*; @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface ActionLog { /** * 模块相关 * @return */ String modual() default ""; /** * 方法描述 * @return */ String methodDesc() default ""; /** * 日志请求来源 * @return */ LogSource source() default LogSource.MANAGER; /** * 日志类别 * @return */ LogType logtype() default LogType.DEFAULTS; }

2.1.5 创建切面LogAspect

package com.zhuhuo.core.logs.aspect; import cn.hutool.www.1234xp.com/binhai.html 欢迎留下您的宝贵建议】

本文共计1598个文字,预计阅读时间需要7分钟。

如何高效开发管理后台操作日志功能,实现日志记录与查询的便捷性?

1. 功能分析 1.1 查询列表 1.1.1 页面效果 1.1.2 功能需求 分页查询默认查10条,每页从第1条开始查询 日志仅提供查询操作、搜索条件、日志来源 搜索来源:精准搜索 请求IP:精准搜索 点击搜索按钮是按精准搜索执行

如何高效开发管理后台操作日志功能,实现日志记录与查询的便捷性?

1.功能分析

1.1. 查询列表

1.1.1. 页面效果

1.1.2. 功能要求

  • 分页查询默认查询10条每页从第1页开始查询
  • 日志只提供查询操作
  • 搜索条件
  • 日志来源:精准搜索
  • 请求ip:精准搜索
  • 点击搜索按钮是按照录入的搜索条件进行查询数据并渲染
  • 点击重置按钮的时候清空搜索条件,并重新渲染数据

1.2.插入日志

1.2.1. 功能要求

  • 日志参数包含:请求ip,请求地址,浏览器信息(如果无则为空),请求时间,请求来源(管理后台/博客前台),请求方法,模块信息,请求参数,响应结果,响应时间,响应时长(s),方法描述,日志类型(新增/修改等等),创建时间,创建人编号(如果为客户端访问则填充ip信息),创建人名称(如果为客户端访问则填充ip信息)

1.3查看详情

1.3.1. 页面效果

1.3.2. 功能要求

  • 页面仅查看无法进行操作

2.功能实现

2.1. 初期准备

2.1.1. 创建数据库 zh_log_info

CREATE TABLE `zh_log_info` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id', `request_ip` varchar(40) DEFAULT NULL COMMENT '请求ip', `request_url` varchar(255) DEFAULT NULL COMMENT '请求地址', `request_browser` varchar(255) DEFAULT NULL COMMENT '日志请求浏览器', `request_source` varchar(40) DEFAULT NULL COMMENT '请求来源 manager管理后台 portal博客前台', `request_method` varchar(255) DEFAULT NULL COMMENT '请求方法', `request_params` text COMMENT '请求参数', `request_result` longtext COMMENT '请求响应结果', `request_start_time` datetime DEFAULT NULL COMMENT '请求开始时间', `request_end_time` datetime DEFAULT NULL COMMENT '响应时间/请求结束时间', `response_interval` bigint DEFAULT NULL COMMENT '响应时长(s)', `log_type` varchar(40) DEFAULT NULL COMMENT '日志类型(类型里面的value)', `log_identifying` varchar(40) DEFAULT NULL COMMENT '日志标识(类型里面的key)', `modual_info` varchar(100) DEFAULT NULL COMMENT '模块信息/请求模块', `method_desc` varchar(255) DEFAULT NULL COMMENT '方法描述', `method_type` varchar(255) DEFAULT NULL COMMENT '请求方法类别 GET/POST/PUT/DELETE', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `create_user_code` varchar(255) DEFAULT NULL COMMENT '创建人标识', `create_user_name` varchar(255) DEFAULT NULL COMMENT '创建人名称', PRIMARY KEY (`id`) ) ENGINE=InnoDB COMMENT='日志记录表';

2.1.2. 创建控制层LogInfoController

package com.zhuhuo.modual.controller.manager; import com.zhuhuo.modual.service.LogInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; @Controller @RequestMapping(value = "/m/logInfo") public class LogInfoController { @Autowired private LogInfoService logInfoService; }

2.1.3. 创建实体映射LogInfo

package com.zhuhuo.modual.entity; import lombok.Data; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; import javax.persistence.Table; import java.io.Serializable; import java.util.Date; import javax.persistence.Id; @Data @AllArgsConstructor @NoArgsConstructor @Table(name = "zh_log_info") public class LogInfo implements Serializable { /** * id */ @Id private Long id; /** * 请求ip */ private String requestIp; /** * 请求地址 */ private String requestUrl; /** * 日志请求浏览器 */ private String requestBrowser; /** * 请求来源 1管理后台 2博客前台 */ private Byte requestSource; /** * 请求方法 */ private String requestMethod; /** * 请求参数 */ private String requestParams; /** * 请求响应结果 */ private String requestResult; /** * 请求开始时间 */ private Date requestStartTime; /** * 响应时间/请求结束时间 */ private Date requestEndTime; /** * 响应时长(s) */ private Integer responseInterval; /** * 日志类型(类型里面的value) */ private String logType; /** * 日志标识(类型里面的key) */ private String logIdentifying; /** * 模块信息/请求模块 */ private String modualInfo; /** * 方法描述 */ private String methodDesc; /** * 请求方法类别 GET/POST/PUT/DELETE */ private String methodType; /** * 创建时间 */ private Date createTime; /** * 创建人标识 */ private String createUserCode; /** * 创建人名称 */ private String createUserName; }

2.1.4. 创建LogInfoMapper, LogInfoMapper.xml

package com.zhuhuo.modual.mapper; import com.zhuhuo.core.frame.mapper.BasicsMapper; import com.zhuhuo.modual.entity.LogInfo; public interface LogInfoMapper extends BasicsMapper<LogInfo>{ }

<resultMap id="BaseResultMap" type="com.zhuhuo.modual.entity.LogInfo"> <id column="id" property="id" jdbcType="BIGINT"/> <result column="request_ip" property="requestIp" jdbcType="VARCHAR"/> <result column="request_url" property="requestUrl" jdbcType="VARCHAR"/> <result column="request_browser" property="requestBrowser" jdbcType="VARCHAR"/> <result column="request_source" property="requestSource" jdbcType="VARCHAR"/> <result column="request_method" property="requestMethod" jdbcType="VARCHAR"/> <result column="request_params" property="requestParams" jdbcType="LONGVARCHAR"/> <result column="request_result" property="requestResult" jdbcType="VARCHAR"/> <result column="request_start_time" property="requestStartTime" jdbcType="TIMESTAMP"/> <result column="request_end_time" property="requestEndTime" jdbcType="TIMESTAMP"/> <result column="response_interval" property="responseInterval" jdbcType="BIGINT"/> <result column="log_type" property="logType" jdbcType="VARCHAR"/> <result column="log_identifying" property="logIdentifying" jdbcType="VARCHAR"/> <result column="modual_info" property="modualInfo" jdbcType="VARCHAR"/> <result column="method_desc" property="methodDesc" jdbcType="VARCHAR"/> <result column="method_type" property="methodType" jdbcType="VARCHAR"/> <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/> <result column="create_user_code" property="createUserCode" jdbcType="VARCHAR"/> <result column="create_user_name" property="createUserName" jdbcType="VARCHAR"/> </resultMap> <sql id="base_column_list"> id, request_ip, request_url, request_browser, request_source, request_method, request_params, request_result,request_start_time, request_end_time, response_interval, log_type, log_identifying, modual_info, method_desc,method_type, create_time, create_user_code, create_user_name </sql>

2.1.5. 创建LogInfoService ,LogInfoServiceImpl

package com.zhuhuo.modual.service; public interface LogInfoService { }

package com.zhuhuo.modual.service.impl; import com.zhuhuo.modual.service.LogInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service("logInfoService") public class LogInfoServiceImpl implements LogInfoService { @Autowired private LogInfoMapper logInfoMapper; }

2.1. 添加日志

2.1.1 引入依赖

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <dependency> <groupId>eu.bitwalker</groupId> <artifactId>UserAgentUtils</artifactId> <version>1.21</version> </dependency>

2.1.2 创建日志枚举LogType

@Getter @AllArgsConstructor public enum LogType { /** * 新增 */ INSERT("insert","新增"), /** * 修改 */ UPDATE("update","修改"), /** * 删除 */ DELETE("delete","删除"), /** * 查看 */ VIEW("view","查看"), /** * 默认的 */ DEFAULTS("default","默认"), ; /** * 枚举标识 */ private String code; /** * 枚举描述 */ private String desc; }

2.1.3 创建枚举LogSource

@Getter @AllArgsConstructor public enum LogSource { /** * 管理后台枚举 */ MANAGER("manager","管理后台"), /** * 博客前台枚举 */ PORTAL("portal","博客前台"); /** * 枚举标识 */ private String code; /** * 枚举描述 */ private String desc; }

2.1.4 创建注解ActionLog

package com.zhuhuo.core.logs.annotation; import com.zhuhuo.core.logs.enums.LogSource; import com.zhuhuo.core.logs.enums.LogType; import java.lang.annotation.*; @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface ActionLog { /** * 模块相关 * @return */ String modual() default ""; /** * 方法描述 * @return */ String methodDesc() default ""; /** * 日志请求来源 * @return */ LogSource source() default LogSource.MANAGER; /** * 日志类别 * @return */ LogType logtype() default LogType.DEFAULTS; }

2.1.5 创建切面LogAspect

package com.zhuhuo.core.logs.aspect; import cn.hutool.www.1234xp.com/binhai.html 欢迎留下您的宝贵建议】