logger.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import {logApi} from '@/http/logApi'
  2. import { logType } from './logEnum.js';
  3. /**
  4. * @eventData 以键值对存储,会在最终上报里解开的参数
  5. * @extParams 最终上报到阿里云以json字符串存储的参数,如果extparams传入的不是obj会转换成obj
  6. */
  7. export function reportLog(eventData = {}, extParams = {}) {
  8. paramsPretreatmentAndRequest(logType.denet, eventData, extParams)
  9. }
  10. function paramsPretreatmentAndRequest(logType, eventData, extParams) {
  11. extParams = wrapObject(extParams)
  12. let obj = {};
  13. let pageSource = eventData.pageSource;
  14. if(eventData.hasOwnProperty('pageSource')) {
  15. delete eventData.pageSource;
  16. }
  17. obj.logType = logType;
  18. obj.eventData = JSON.stringify(eventData)
  19. obj.extParams = JSON.stringify(extParams)
  20. logApi({params: {
  21. pageSource,
  22. ...obj
  23. }})
  24. }
  25. function wrapObject(extParams) {
  26. if (typeDecide(extParams, 'Object')) {
  27. return extParams
  28. }
  29. return { 'defaultExt': extParams }
  30. }
  31. /**
  32. * 检测对象类型
  33. */
  34. function typeDecide(o, type) {
  35. return Object.prototype.toString.call(o) === `[object ${type}]`;
  36. }