【问题标题】:write a log files into device using cordova使用cordova将日志文件写入设备
【发布时间】:2016-03-06 10:13:17
【问题描述】:

我正在使用 ionic/cordova 构建移动应用程序。为了调试应用程序,我想使用文件系统编写一个日志文件并将其存储到设备中(即 SD 卡中的某个位置)。有没有办法使用phonegap来实现这个功能。

谁能推荐一些有用的链接?

【问题讨论】:

    标签: cordova ionic


    【解决方案1】:

    您可以通过在您的应用中添加下一个插件来做到这一点:

    https://github.com/pbakondy/filelogger

    【讨论】:

    • 我尝试了日志到文件,但是当我尝试使用 cordova install 时,我遇到了编译问题,当我尝试使用 npm install 时,我在 window.logToFile.setLogfilePath(logPath) 中找不到类, function () { console.log("Logger Logpath 设置成功") }, function (err) { console.log("Logger Logpath not set", err) });
    【解决方案2】:

    放入这一行 log.bat 文件,这将打开控制台并记录设备上发生的每一件事。

    adb logcat CordovaActivity:V CordovaWebView:V CordovaWebViewClient:V IceCreamCordovaWebViewClient:V CordovaLog:V *:S
    

    更新: 写入文件: 一个 good example 跟随,但你需要处理错误回调,以获取错误

    window.resolveLocalFileSystemURL(cordova.file.dataDirectory, function(dir) {
        console.log("got main dir",dir);
        dir.getFile("log.txt", {create:true}, function(file) {
            console.log("got the file", file);
            logOb = file;
            writeLog("App started");            
        });
    });
    
    
    function writeLog(str) {
        if(!logOb) return;
        var log = str + " [" + (new Date()) + "]\n";
        console.log("going to log "+log);
        logOb.createWriter(function(fileWriter) {
    
            fileWriter.seek(fileWriter.length);
    
            var blob = new Blob([log], {type:'text/plain'});
            fileWriter.write(blob);
            console.log("ok, in theory i worked");
        }, fail);
    }
    
        document.querySelector("#actionOne").addEventListener("touchend", function(e) {
        //Ok, normal stuff for actionOne here
        //
        //Now log it
        writeLog("actionOne fired");
    }, false);
    
    
    
      document.querySelector("#actionTwo").addEventListener("touchend",              function(e) {
            //Ok, normal stuff for actionTwo here
            //
            //Now log it
            writeLog("actionTwo fired");
        }, false);
    

    最后:

    function justForTesting() {
    logOb.file(function(file) {
        var reader = new FileReader();
    
        reader.onloadend = function(e) {
            console.log(this.result);
        };
    
        reader.readAsText(file);
    }, fail);
    
    }
    

    这里是source 的解释。

    希望对你有帮助,祝你好运

    【讨论】:

    • 谢谢..但是我们如何执行以及我们需要将它放在哪里?
    【解决方案3】:

    你可以用cordova的方式来做,写一个名为log.txt的文件,然后把你的日志放在那里。

    请关注tutorial,了解如何在科尔多瓦执行此操作。

    对于离子: 您可以将这些代码放入您的控制器中。

    【讨论】:

    • 我已经尝试使用上面的代码,但无法正常工作(即无法创建文件)
    • 这样的进步,唯一的问题是现在,你需要添加清单文件的权限:
      我已经在清单文件中有一个条目。但它显示在“cdvfile”中,我们可以在哪里找到这个文件夹?
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签