yirtc-sdk-web
Version:
基于WebRTC的实时音视频SDK
114 lines (113 loc) • 3.3 kB
JavaScript
/**
* 日志记录器类
*/
import { LogLevel } from '../types';
export class Logger {
/**
* 创建日志记录器实例
* @param tag 日志标签
*/
constructor(tag) {
this.tag = tag;
}
/**
* 设置全局日志级别
* @param level 日志级别
*/
static setLogLevel(level) {
Logger.globalLogLevel = level;
}
/**
* 启用日志上传
* @param appKey 应用密钥
*/
static enableLogUpload(appKey) {
Logger.logUploadEnabled = true;
Logger.appKey = appKey;
console.log('[Logger] 日志上传已启用');
}
/**
* 禁用日志上传
*/
static disableLogUpload() {
Logger.logUploadEnabled = false;
console.log('[Logger] 日志上传已禁用');
}
/**
* 记录调试日志
* @param message 日志消息
* @param data 日志数据
*/
debug(message, data) {
if (this._shouldLog(LogLevel.DEBUG)) {
console.debug(`[${this.tag}] ${message}`, data !== undefined ? data : '');
this._uploadLog('debug', message, data);
}
}
/**
* 记录信息日志
* @param message 日志消息
* @param data 日志数据
*/
info(message, data) {
if (this._shouldLog(LogLevel.INFO)) {
console.info(`[${this.tag}] ${message}`, data !== undefined ? data : '');
this._uploadLog('info', message, data);
}
}
/**
* 记录警告日志
* @param message 日志消息
* @param data 日志数据
*/
warn(message, data) {
if (this._shouldLog(LogLevel.WARN)) {
console.warn(`[${this.tag}] ${message}`, data !== undefined ? data : '');
this._uploadLog('warn', message, data);
}
}
/**
* 记录错误日志
* @param message 日志消息
* @param data 日志数据
*/
error(message, data) {
if (this._shouldLog(LogLevel.ERROR)) {
console.error(`[${this.tag}] ${message}`, data !== undefined ? data : '');
this._uploadLog('error', message, data);
}
}
/**
* 判断是否应该记录日志
* @param level 日志级别
* @returns boolean
*/
_shouldLog(level) {
const levels = {
[LogLevel.DEBUG]: 0,
[LogLevel.INFO]: 1,
[LogLevel.WARN]: 2,
[LogLevel.ERROR]: 3,
[LogLevel.NONE]: 4
};
return levels[level] >= levels[Logger.globalLogLevel];
}
/**
* 上传日志
* @param level 日志级别
* @param message 日志消息
* @param data 日志数据
*/
_uploadLog(level, message, data) {
if (!Logger.logUploadEnabled || !Logger.appKey)
return;
// 在实际应用中,这里应该将日志发送到服务器
// 简化版中,我们只打印一条消息表示日志已上传
if (this._shouldLog(LogLevel.DEBUG)) {
console.debug(`[Logger] 日志已上传: ${level} - ${message}`);
}
}
}
Logger.globalLogLevel = LogLevel.INFO;
Logger.logUploadEnabled = false;
Logger.appKey = '';