uni-app 可以在app端添加崩溃本地日志吗

发布于 1周前 作者 sinazl 来自 Uni-App

uni-app 可以在app端添加崩溃本地日志吗

情况:app在无外网的情况下,运行一段时间就会闪退。

由于没有外网,无法使用uni自家的统计功能,友盟等第三方也不能用,想要添加本地的崩溃日志,奈何目前还不会原生开发,请求大佬有没有这方面的插件或者demo呢?万分感谢谢谢

4 回复

可以做,联系QQ:1804945430


可以做,联系QQ:1196097915

可以做,联系微信:zhimitec 专业的uniapp插件/项目外包团队为您服务, 可签订合同、提供发票,售后无忧

当然可以,在uni-app中,你可以通过多种方式实现应用崩溃时的本地日志记录。下面是一个基本的实现方案,它依赖于uni-app的plus对象(即5+ App运行时环境)来捕获未捕获的异常,并将这些信息写入本地文件。

步骤1:捕获未捕获异常

首先,你需要在应用启动时设置一个全局的错误处理函数,来捕获那些未被try-catch块捕获的异常。

// main.js 或 app.js 入口文件

// 捕获全局未捕获异常
window.addEventListener('error', function(event) {
    console.error('Global Error:', event.message, event.filename, event.lineno, event.colno, event.error);
    saveCrashLog(event);
}, true);

// 捕获Promise未捕获的拒绝
window.addEventListener('unhandledrejection', function(event) {
    console.error('Unhandled Rejection:', event.reason);
    saveCrashLog({ message: event.reason, type: 'unhandledrejection' });
}, true);

function saveCrashLog(errorInfo) {
    const log = JSON.stringify({
        timestamp: new Date().toISOString(),
        message: errorInfo.message || errorInfo.reason,
        filename: errorInfo.filename,
        lineno: errorInfo.lineno,
        colno: errorInfo.colno,
        error: errorInfo.error && errorInfo.error.stack || '',
        type: errorInfo.type || 'error'
    });
    
    plus.io.resolveLocalFileSystemURL('_documents/', function(entry) {
        entry.getFile('crash_log.txt', { create: true, exclusive: false }, function(fileEntry) {
            fileEntry.createWriter(function(writer) {
                writer.seek(writer.length); // 移动到文件末尾
                writer.write(log + '\n');
            }, function(e) {
                console.error('Write failed: ' + e.message);
            });
        }, function(e) {
            console.error('Get file failed: ' + e.message);
        });
    }, function(e) {
        console.error('Resolve URL failed: ' + e.message);
    });
}

步骤2:测试与验证

为了验证这个功能,你可以故意制造一些错误,比如:

setTimeout(() => {
    throw new Error('This is a test crash!');
}, 1000);

运行应用,等待一秒后,应用应该会触发全局错误处理函数,并将错误信息写入到_documents/crash_log.txt文件中。

注意事项

  1. 权限:确保你的应用有写入文件系统的权限。在manifest.json中配置相应的权限。
  2. 日志管理:考虑到日志文件可能会持续增长,建议定期清理或压缩旧日志。
  3. 隐私保护:确保日志中不包含敏感用户信息。

通过这种方式,你可以在uni-app中实现应用崩溃时的本地日志记录,便于后续的问题排查和修复。

回到顶部