uniapp 日志组件
日志组件的作用
在UniApp开发中,日志组件用于记录运行时的调试信息、错误信息或业务逻辑跟踪,便于排查问题和分析应用行为。
实现日志组件的核心方法
控制台输出
通过console.log()、console.error()等原生方法输出日志,适用于开发阶段调试。需注意生产环境需关闭或过滤敏感信息。
console.log('Debug信息:', data);
console.error('错误日志:', error);
自定义日志模块
封装一个日志工具类,支持分级(如DEBUG、INFO、WARN、ERROR)和持久化存储(如写入本地文件或发送到服务器)。
const LogLevel = { DEBUG: 0, INFO: 1, WARN: 2, ERROR: 3 };
class Logger {
constructor(level = LogLevel.DEBUG) {
this.level = level;
}
debug(message) {
if (this.level <= LogLevel.DEBUG) console.log(`[DEBUG] ${message}`);
}
error(message) {
if (this.level <= LogLevel.ERROR) console.error(`[ERROR] ${message}`);
}
}
持久化存储日志
利用UniApp的本地存储API(如uni.setStorageSync)或通过HTTP请求将日志发送到后端服务器。
// 存储到本地
function saveLogToLocal(log) {
const logs = uni.getStorageSync('app_logs') || [];
logs.push({ time: new Date(), content: log });
uni.setStorageSync('app_logs', logs);
}
日志组件的优化建议
环境区分
通过process.env.NODE_ENV判断当前环境,仅在开发环境输出详细日志,生产环境仅记录错误日志。
日志分级过滤
根据需求动态调整日志级别,避免冗余输出。例如:
const logger = new Logger(process.env.NODE_ENV === 'development' ? LogLevel.DEBUG : LogLevel.ERROR);
性能考虑
高频日志建议使用防抖或异步写入,避免阻塞主线程。
第三方日志库集成
若需更复杂功能(如日志上报、分析),可集成第三方服务如Sentry、Log4js等。需适配UniApp的平台兼容性。
// 示例:集成Sentry(需引入对应SDK)
Sentry.init({ dsn: 'YOUR_DSN' });
Sentry.captureException(error);
注意事项
- 日志内容避免包含用户敏感数据。
- 生产环境需限制日志体积,定期清理或压缩。
- 跨平台时注意API兼容性(如H5与小程序差异)。







