idb-logger webwebworkerindexedDBweb
npm i idb-logger
import Logger from 'idb-logger';
<script src="https://cdn.jsdelivr.net/npm/idb-logger/idb-logger.min.js"></script>
<script>
window.IDBLogger;
</script>
const logger = new Logger();
logger.log('');
logger.error('', '', {type: ''});
logger.log('start').then(({discard, add})=>{
// add
// maxRecordsdiscard null
})
logger.download(); //
ts
declare class Logger {
static version: string;
private _store;
id: string;
storeType: TLogStoreType;
constructor({ id, useConsole, storeType, maxRecords, baseInfo, onReport, onDiscard, }?: ILoggerOption);
injectBaseInfo(baseInfo?: IBaseInfoOption & IJson): Promise<void>;
log(...args: any[]): Promise<IAddReturn>;
error(...args: any[]): Promise<IAddReturn>;
warn(...args: any[]): Promise<IAddReturn>;
info(...args: any[]): Promise<IAddReturn>;
private _logCommon;
close(): Promise<boolean>;
destory(): Promise<boolean>;
clear(): Promise<boolean>;
count(): Promise<number>;
delete(logid: string): Promise<boolean>;
refreshTraceId(): Promise<void>;
refreshDurationStart(): Promise<void>;
download({ name, filter }?: {
name?: string;
filter?: TFilterOption;
keys?: string[];
}): Promise<number>;
get(logid: string): Promise<ILogDBData | null>;
getAll(): Promise<ILogDBData[]>;
filter(filter?: TFilterOption): Promise<ILogDBData[]>;
}
logdata
interface ILogDBData {
uid: string; // id storage
clientid: string; // id storage
traceid: string; // id refreshTraceId
network: string; //
url: string; // url
ua: string; // ua
msg: string; // log
payload?: any; // log
type: TLogType; // log info warn error
duration: number; // refreshDurationStart
time: string; //
timestamp: number; //
logid: string; // id
}
new Logger({
id, // default
useConsole, // true
storeType, // idb idb storage temp none
maxRecords, // 10000
baseInfo, //
onReport, //
onDiscard, // maxRecords
onError, // error listener
});
interface ILoggerOption extends Partial<IStoreConfig> {
id?: string;
useConsole?: boolean;
storeType?: TLogStoreType;
maxRecords?: number;
baseInfo?: IBaseInfo;
onReport?: (data: ILogDBData) => void;
onDiscard?: (data: ILogDBData) => void;
onError?: (err: ILogError) => void;
}
idb indexedDBstorage localStoragetemp jsnoneidb-logger
idb
logger onDiscard
jsonbaseInfobaseInfo
baseInfo clientid, uid, traceid, network, url, ua
loggerlogerror warninfo
await logger.log('start'); // Promise<{discard, add}> add 1
await logger.info({
msg: 'start', // message
time: 'xxxx', // log
your_custom: 'xxxx', //
}); // 2
await logger.warn({}, [], '', 1); // 3
await logger.error('error', {}, [], '', 1); // 1
await logger.filter(filter); // Promise
filter
(data: ILogDBData) => boolean
true false
: indexedDB workerworker
await logger.filter(item=>{
return item.msg.includes('xxx') && item.type === 'log';
})
json and ,
await logger.filter({
msg: /xxx/i,
type: 'log',
})
json or and 2
await logger.filter([{
msg: /xxx/i,
}, {
type: 'log',
}])
msgxxx typelog
indexedDB
await logger.download({
name, //
filter, // 1.2.3 filter
keys, //
});
await logger.getAll();
id
await logger.getAll(logid);
await logger.count();
id
await logger.delete(logid);
await logger.injectBaseInfo({
network: 'wifi',
phone: 'xxxx',
});
traceid
refreshDurationStart
await logger.refreshTraceId();
await logger.refreshTraceId();
await logger.close();
await logger.clear();
await logger.destory();