import LogManager from "../src/log_manager"; import LogRegister from '../src/log_register' import { LogItem, LogConfig, Method, RET } from "../src/interface"; import { timestampToDateTime } from "../src/lib/utils"; import { DBLogItem } from "../src/log_db"; const url = 'http://47.101.37.38:38080/app/mock/22/kxd/hera/user/add' const wrongUrl = "http://47.101.37.38:38080/app/mock/22" const metaData = { userId: "", token: "", clientTime: "", // versionName?: string | "仅APP提供", // versionCode?: string | "仅APP提供", // location?: string | "仅APP提供", // cityCode?: string | "仅APP提供", // adCode?: string | "仅APP提供", networkStatus: "", // 单次启动应用到关闭应用周期内的标识 appSessionId: "", // 打开页面到关闭/离开页面周期内的标识 pageSessionId: "", // 当前页面ID :安卓是包路径+类名,H5是URL pageId: "", pageTitle: "" } const useWorker = false const logBatchNum = 100 //测试批量存数据 // function testBatchLogOprate() { // const button = document.createElement('button') // button.innerText = "测试batch处理log存储" // button.addEventListener('click', () => { // logRegist({ type: `NO.__`, content: `NO.__${timestampToDateTime()}` }, useWorker) // }) // document.body.append(button) // } // testBatchLogOprate() //测试 // testStoreLog(useWorker) //测试存数据 // function testStoreLog(useWorker: boolean) { // const button = document.createElement('button') // button.innerText = "批量发送log" // button.addEventListener('click', () => { // startLog(useWorker) // }) // document.body.append(button) // } /********************************************* */ // function startLog(useWorker = false) { // console.info('开始计时:', Date.now()) // let c = 1 // const inter = setInterval(() => { // if (c <= logBatchNum) { // console.log(`send No.${c} LOG`) // logRegist({ type: `NO.${c}__`, content: `NO.${c}__${timestampToDateTime()}`, isImmediate: Math.ceil(Math.random() * 10) % 2 === 1 ? true : false }, useWorker) // c++ // } // else { // clearInterval(inter) // return // } // }) // } // function addImediateLog() { // const input = document.createElement('input') // input.style.width = '300px' // input.style.height = '60px' // input.placeholder = '请输入立即待上报的日志内容' // const div = document.createElement('div') // div.innerText = '\n' // document.body.append(div) // input.onkeypress = (e) => { // // console.log('keypress', e) // if (e.keyCode === 13) { // logRegist({ type: 'test_immediate_table', content: input.value, isImmediate: true }) // } // } // document.body.append(input) // } // addImediateLog() const config: LogConfig = { useWorker: true, url, method: Method.POST, headers: { 'jzx-appid': "", 'ACCESS_TOKEN': "" }, repeat: 0, duration: 1000, // DBName: 'your app dbName ,it is unique', metaData, handleResponse: (responseData: string) => { // 返回{ok,data,error} const data = JSON.parse(responseData) return { ret: data.isOk ? RET.SUCCESS : RET.FAILED, error: data.errMsg } }, handleRequest: (logs: DBLogItem[]) => {//相当于日志的封装 return { data: logs.reduce((arr, log) => { arr.push({ ...log, ...metaData }) return arr }, []) } } } //测试用 export function logRegist(logConfig: LogConfig) { const lr = new LogRegister(logConfig) return lr //lr 使用report上传日志 直接调用lr.report(log:LogItem) } const lr = logRegist(config) setTimeout(() => { lr.report({ type: 'test_webworker', content: 'log1 webworker' }) }, 1000)