使用npm:worker-loader,dexie,ali-oss
监听console,并做本地存储
创建一个浏览器DB
import Dexie from 'dexie';
const db = new Dexie('dbname');
db.version(1).stores({
logs: 'content',
});
export default db;
创建一个 log.worker
import db from './db';
const ctx: DedicatedWorkerGlobalScope = self as any;
// 监听 worker-loader 传递的消息
ctx.onmessage = async (evt: any) => {
if (evt.data) {
if (evt.data.type === 'log') {
if (db.isOpen()) {
// @ts-ignore
await db.logs.put({
content: evt.data.data });
} else {
await db.open();
}
}
}
};
export default null as any;
拦截console
/**
*
* 安装 worker-loader
* ts声明文件添加
declare module 'worker-loader!*' {
class WebpackWorker extends Worker {
constructor();
}
export default WebpackWorker;
}
*/
import LogWorker from 'worker-loader!./log.worker';
export default class Log {
static originConsole = window.console;
// 日志开关
static thread =