logger.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import axios from 'axios';
  2. import { logType } from './logEnum.js';
  3. const logApi = {
  4. prod: 'https://log.weiqumeta.com',
  5. pre: 'https://prelog.weiqumeta.com',
  6. test: 'https://testlog.weiqumeta.com'
  7. }
  8. const logAPIUrl = logApi[process.env.NUXT_ENV.MODE] + '/log-center'
  9. /**
  10. * @eventData 以键值对存储,会在最终上报里解开的参数
  11. * @extParams 最终上报到阿里云以json字符串存储的参数,如果extparams传入的不是obj会转换成obj
  12. */
  13. export function reportLog(params) {
  14. paramsPretreatmentAndRequest(logType.denet, params)
  15. }
  16. function paramsPretreatmentAndRequest(logType, params) {
  17. let {eventData = {}, extParams = {}} = params.params || {
  18. params: {
  19. }
  20. }
  21. extParams = wrapObject(extParams)
  22. params.params.logType = logType;
  23. params.params.eventData = JSON.stringify(eventData)
  24. params.params.extParams = JSON.stringify(extParams)
  25. axios.post(`${logAPIUrl}/statistics/uploadLogFromFrontend`, params)
  26. }
  27. function wrapObject(extParams) {
  28. if (typeDecide(extParams, 'Object')) {
  29. return extParams
  30. }
  31. return { 'defaultExt': extParams }
  32. }
  33. /**
  34. * 检测对象类型
  35. */
  36. function typeDecide(o, type) {
  37. return Object.prototype.toString.call(o) === `[object ${type}]`;
  38. }