@tencentcloud/chat-cs-uniapp
Version:
TCCC uniapp UIKit
96 lines (87 loc) • 2.49 kB
JavaScript
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();