UNPKG

@tencentcloud/chat-cs-uniapp

Version:

TCCC uniapp UIKit

96 lines (87 loc) 2.49 kB
import { getCookie } from '../http/cookie'; import { getInfo } from '../http/info'; export class Logger { level; sdkAppId; constructor(level) { this.level = level || 'debug'; this.sdkAppId = wx.getAccountInfoSync().miniProgram.appId; } now = () => { const date = new Date(); return `${[date.getFullYear(), date.getMonth() + 1, date.getDate()].join('-')} ${[ date.getHours(), date.getMinutes() < 10 ? `0${date.getMinutes()}` : date.getMinutes(), date.getSeconds() < 10 ? `0${date.getSeconds()}` : date.getSeconds(), ].join(':')}`; }; convertAnyTypeToString = (s) => { try { switch (typeof s) { case 'object': if (s instanceof Error) { return `${s.name} ${s.message}`; } return JSON.stringify(s); case 'function': return ''; default: return `${s}`; } } catch (e) { return 'convert failed'; } }; request = (log, level) => { const { version, envVersion } = wx.getAccountInfoSync().miniProgram; return new Promise((resolve, reject) => { wx.request({ url: 'https://api.tccc.qcloud.com/ccc/debug/seatLog', method: 'POST', enableHttp2: true, data: { log: `[${this.now()}] [${version || envVersion}] ${log}`, level, timestamp: Date.now(), ...getInfo(), staff: { userId: getCookie('openId'), sdkAppId: this.sdkAppId, }, }, success: resolve, fail: reject, }); }); }; log = (log, level = 'debug') => { if (getCookie('sdkAppId')) { this.sdkAppId = getCookie('sdkAppId'); } else { this.sdkAppId = wx.getAccountInfoSync().miniProgram.appId; } this.request(`[${level.toUpperCase()}] [${log}]`, level) .then(() => { // isDev console.debug(log); }) .catch(() => console.warn('log failed')); }; info(...args) { const log = args.map(this.convertAnyTypeToString).join(' '); this.log(log, 'info'); } debug(...args) { const log = args.map(this.convertAnyTypeToString).join(' '); this.log(log, 'debug'); } warn(...args) { const log = args.map(this.convertAnyTypeToString).join(' '); this.log(log, 'warn'); } error(...args) { const log = args.map(this.convertAnyTypeToString).join(' '); this.log(log, 'error'); } } export const logger = new Logger();