logger

Web logger based on indexedDB and WebWorker

MIT License

Downloads
102
Stars
27
Committers
3

idb-logger

| English | | | Gitee

0.

idb-logger webwebworkerindexedDBweb

0.1

  1. WebWorker + indexedDB
  2. idb-logger
  3. onReport

1.

1.0 install

1.0.1 npm install

npm i idb-logger
import Logger from 'idb-logger';

1.0.2 cdn

<script src="https://cdn.jsdelivr.net/npm/idb-logger/idb-logger.min.js"></script>
<script>
  window.IDBLogger;
</script>

1.1

const logger = new Logger();

logger.log('');
logger.error('', '', {type: ''});

logger.log('start').then(({discard, add})=>{
    // add 
    //  maxRecordsdiscard null
})

logger.download(); // 

1.2. api

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
}

1.2.1

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;
}
  1. storeType

idb indexedDBstorage localStoragetemp jsnoneidb-logger

idb

  1. maxRecords

logger onDiscard

  1. baseInfo

jsonbaseInfobaseInfo

baseInfo clientid, uid, traceid, network, url, ua

1.2.2

loggerlogerror warninfo

  1. logmsgpayload
  2. jsonjsonlog
  3. __def__msgpayload
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

1.2.3

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';
})
  1. AND json

json and ,

await logger.filter({
    msg: /xxx/i,
    type: 'log',
})
  1. OR json

json or and 2

await logger.filter([{
    msg: /xxx/i,
}, {
    type: 'log',
}])

msgxxx typelog

1.2.4

indexedDB

await logger.download({
    name, //   
    filter, //   1.2.3  filter
    keys, //  
});

1.2.5 api

1.2.5.1 getAll
await logger.getAll();
1.2.5.1 get

id

await logger.getAll(logid);
1.2.5.1 count
await logger.count();
1.2.5.1 delete

id

await logger.delete(logid);
1.2.5.1 injectBaseInfo
await logger.injectBaseInfo({
    network: 'wifi',
    phone: 'xxxx',
});
1.2.5.1 refreshTraceId

traceid

refreshDurationStart

await logger.refreshTraceId();
1.2.5.1 refreshDurationStart
await logger.refreshTraceId();
1.2.5.1 close
await logger.close();
1.2.5.1 clear
await logger.clear();
1.2.5.1 destory
await logger.destory();