@gaoding/web-logger

> TODO: description

Usage no npm install needed!

<script type="module">
  import gaodingWebLogger from 'https://cdn.skypack.dev/@gaoding/web-logger';
</script>

README

@gaoding/web-logger

Web 平台日志上报 SDK

安装

npm i @gaoding/web-logger

使用

import { webLogger, wxLogger } from '@gaoding/web-logger';

// weblogger 和 wxLogger 接口一致

// 在项目入口初始化
logger.init('testname', { isDebug: true, user: {id: '123456'}, is_login: true });

logger.error('发送一个错误日志');
logger.error(new Error('发送一个错误日志'));

logger.info('发送一个消息日志');

// 修改用户id
logger.setUser({id: '45667'})
// 修改配置项
logger.setOptions({is_login: false})

处理 vue.js 的 onerror 错误

import Vue from 'vue';
import { vuePlugin, logger } from '@gaoding/web-logger';

// 自动上报 vue 错误日志
vuePlugin(logger, Vue);

处理 window 的 onerror 错误

import { windowPlugin, logger } from '@gaoding/web-logger';

// 自动上报 window 错误日志
windowPlugin(logger);

具体接口


// 扩展字段
export interface IAttributes {
    module: string;
    url?: string;
    method?: 'GET' | 'POST' | 'PUT' | 'DELETE';
    ua?: string;
    errorType?: string;
    stacktrace: {
        file: string;
        args?: string[];
        context?: string;
        line?: number;
        column?: number;
        func?: string;
    }[];
    [k: string]: any;
}

// 初始化选型
export interface IOptions {
    isDebug?: boolean;
    log_type?: string;

    // 用户是否登录,区分游客
    is_login?: boolean;
    device_id?: string;
    dsn: string;
    stackTraceLimit?: number;

    // 用户信息
    user?: IUser;
}

declare class Logger {
    init(appName: string, options?: Partial<IOptions>): void;
    setUser(user: IUser): void;
    setOptions(options: IOptions): void;
    info(message: string | Error, attributes?: Partial<IAttributes>): void;
    debug(message: string | Error, attributes?: Partial<IAttributes>): void;
    error(message: string | Error, attributes?: Partial<IAttributes>): void;
    warn(message: string | Error, attributes?: Partial<IAttributes>): void;
}