当前位置:首页 > VUE

vue实现操作日志记录

2026-02-22 10:31:00VUE

实现操作日志记录的方法

使用 Vuex 和 Axios 拦截器

在 Vue 项目中,可以通过 Vuex 管理日志状态,结合 Axios 拦截器捕获请求和响应,记录操作日志。

安装必要的依赖:

npm install axios vuex

创建 Vuex store 模块管理日志:

// store/modules/log.js
const state = {
  logs: []
}

const mutations = {
  ADD_LOG(state, log) {
    state.logs.push(log)
  }
}

const actions = {
  addLog({ commit }, log) {
    commit('ADD_LOG', log)
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}

配置 Axios 拦截器:

vue实现操作日志记录

// utils/request.js
import axios from 'axios'
import store from '@/store'

const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API,
  timeout: 5000
})

service.interceptors.request.use(config => {
  if (config.method !== 'get') {
    store.dispatch('log/addLog', {
      action: `${config.method} ${config.url}`,
      params: config.data || {},
      timestamp: new Date().toISOString()
    })
  }
  return config
})

export default service

使用自定义指令记录用户操作

创建全局指令记录 DOM 操作:

// directives/log.js
export default {
  inserted(el, binding) {
    el.addEventListener('click', () => {
      const action = binding.value || el.innerText
      this.$store.dispatch('log/addLog', {
        action,
        timestamp: new Date().toISOString()
      })
    })
  }
}

注册指令:

// main.js
import logDirective from '@/directives/log'

Vue.directive('log', logDirective)

使用指令:

vue实现操作日志记录

<button v-log="'用户点击了提交按钮'">提交</button>

使用 Vue Router 导航守卫记录页面访问

记录路由跳转信息:

// router/index.js
router.beforeEach((to, from, next) => {
  store.dispatch('log/addLog', {
    action: `访问页面: ${to.path}`,
    params: to.query,
    timestamp: new Date().toISOString()
  })
  next()
})

日志持久化存储

添加定期将日志发送到服务器的逻辑:

// utils/log.js
export function uploadLogs() {
  const logs = store.state.log.logs
  if (logs.length > 0) {
    axios.post('/api/logs', { logs }).then(() => {
      store.commit('log/CLEAR_LOGS')
    })
  }
}

// 每5分钟上传一次
setInterval(uploadLogs, 5 * 60 * 1000)

日志展示组件

创建日志展示组件:

<template>
  <div class="log-container">
    <div v-for="(log, index) in logs" :key="index">
      [{{ log.timestamp }}] {{ log.action }}
    </div>
  </div>
</template>

<script>
export default {
  computed: {
    logs() {
      return this.$store.state.log.logs
    }
  }
}
</script>

以上方法可以根据项目需求组合使用,实现完整的操作日志记录功能。

标签: 操作日志
分享给朋友:

相关文章

vue实现选题操作

vue实现选题操作

Vue 实现选题操作 在 Vue 中实现选题操作通常涉及数据绑定、事件处理和状态管理。以下是几种常见的实现方式: 单选实现 使用 v-model 绑定单选值,通过 radio 或 select 元素…

java 如何记录日志

java 如何记录日志

Java 日志记录方法 Java 提供了多种日志记录框架,以下是常用的几种方法: 使用 java.util.logging (JUL) JUL 是 Java 自带的日志框架,无需额外依赖。 初始化…

uniapp 日志组件

uniapp 日志组件

uniapp 日志组件实现方案 在 uniapp 中可以通过自定义组件或第三方插件实现日志功能,以下是几种常见方案: 自定义日志组件 创建一个可复用的日志显示组件,包含以下功能: 日志信息展示区域…

uniapp 日志记录

uniapp 日志记录

日志记录的必要性 在 uniapp 开发中,日志记录是排查问题、分析用户行为的重要手段。通过日志可以追踪运行时错误、性能瓶颈及用户操作路径,尤其在多端发布时,统一的日志管理能显著提升调试效率。 控制…

uniapp 日志存储

uniapp 日志存储

uniapp 日志存储方法 在 uniapp 中存储日志可以通过多种方式实现,以下是一些常见的方法: 使用本地存储 通过 uni.setStorageSync 和 uni.getStorageSyn…

uniapp 数据操作

uniapp 数据操作

uniapp 数据操作 数据绑定与渲染 在uniapp中,数据绑定使用双花括号{{}}语法,类似于Vue.js。在模板中直接绑定数据变量: <template> <view&g…