loggerPlugin.js 1.4 KB
// loggerPlugin.js
export default {
  install(Vue, options) {
    // 创建一个 Vue 实例作为事件总线
    // const bus = new Vue()
    const cLog = console.log
    const cError = console.error
    options.commit('setStoreLog', cLog)

    console.netwokrLog = function (data) {
      options.commit('addNetworkLoggerData', {
        sendTime: Date.now(),
        ...data
      })
    }

    console.log = function (data) {
      cLog(...arguments)
      if (arguments[0]) {
        let length = arguments.length
        let logTime = Date.now()
        for (let index = 0; index < length; index++) {
          const item = arguments[index]
          options.commit('addLoggerData', {
            logType: 'log',
            logId: logTime,
            type: typeof item,
            log: item
          })
        }
      }
    }

    console.error = function () {
      cError(...arguments)
      let length = arguments.length
      let logTime = Date.now()
      for (let index = 0; index < length; index++) {
        const item = arguments[index]
        options.commit('addLoggerData', {
          logType: 'error',
          logId: logTime,
          type: typeof item,
          log: typeof item === 'object' ? JSON.stringify(item) : item
        })
      }
    }

    Vue.config.errorHandler = function (error, vm, info) {
      console.error('Error message:' + error.message, 'Error stack:' + error.stack)
    }
  }
}