当前位置:首页 > 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 中实现权限控制通常涉及前端路由、按钮/组件级权限、接口权限等多个层面。以下是常见的实现方法: 路由权限控制 通过动态路由实现,根据用户权限过滤可访问的路由: 定…

vue实现操作执行功能

vue实现操作执行功能

Vue 实现操作执行功能的方法 使用 methods 定义方法 在 Vue 组件的 methods 选项中定义需要执行的操作方法。这些方法可以绑定到模板中的事件或直接调用。 export defa…

php实现登录的操作

php实现登录的操作

PHP 登录功能实现 数据库准备 创建用户表存储用户名和密码(密码需加密存储) CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY…

php实现文件读写操作

php实现文件读写操作

文件读取操作 使用file_get_contents函数可以快速读取整个文件内容到一个字符串中。适合读取小文件,简单高效。 $content = file_get_contents('exampl…

php实现日志

php实现日志

PHP 实现日志功能的方法 使用内置函数 error_log() PHP 提供了 error_log() 函数,可以直接将日志写入文件或系统日志中。error_log("Error message…

php实现链表操作

php实现链表操作

PHP实现链表基础结构 链表由节点(Node)构成,每个节点包含数据域和指向下一个节点的指针。以下是单向链表的节点类实现: class ListNode { public $data;…