在iOS WebView中获取启动控制台日志

时间:2014-09-12 14:10:02

标签: ios cordova console.log

在Cordova应用程序中,在连接Safari的开发人员工具之前,任何对控制台。{log,warn,error等}的调用都不会出现在控制台中。这使得无法调试启动错误。我如何获得这些消息?

奖金问题:如何让WebView停止调试;连接Safari之前的行?

6 个答案:

答案 0 :(得分:1)

我记得有一位朋友告诉我有关保持Safari网络检查程序运行的方法,无论应用程序是否在前台。 I found his article以下是详细信息 -

要做的第一件事就是设置全局热键 - 步骤:

  • 打开系统偏好设置/键盘
  • 在右侧面板中,选择Application Shortcuts
  • 添加热键 - 使用您想要的任何键(我使用CMD + ALT + I
  • 匹配的密钥为index.html或任何您的cordova主要密码 html文件是

保持开放SWI的步骤

  • 启动Cordova App
  • 打开SWI
  • 关闭SWI
  • 使用全局热键Application Shortcuts
  • 中设置的快捷键启动SWI
  • 关闭应用
  • 重新打开应用程序 - 通知SWI仍在运行,并继续为我们提供日志记录/调试!

除了上面的技术,您是否在下面安装了此插件并检查了Xcode中的日志?

cordova plugin add org.apache.cordova.console

你使用Ripple Emulator吗? Here is a great post on setting it up

答案 1 :(得分:1)

有一个很好的新工具,非常简单,可以解决您的问题。看一下GapDebug here,它几​​乎是新的,但对我来说非常棒!

它完全符合您尝试使用Safari Remote Inspector实现的功能,特别是它在退出应用程序时不会关闭会话,因此会捕获所有控制台输出。

与Android结合使用也非常有趣,因为您可以获得一个相应调试两个平台的工具。

答案 2 :(得分:1)

这个简单的技巧很有用,只需在Safari中打开控制台并运行:

window.location.reload()

答案 3 :(得分:0)

我当然可以覆盖或包装console.log以将日志消息推送到数组window._log

(function(){
    var _console = window.console;
    window.console = {};
    window.$log = {};
    ['log', 'warn', 'error', 'debug'].forEach(function(level){
        window._log[level] = [];
        window.console[level] = function(){
            var args = Array.prototype.slice.apply(arguments);
            window._log[level].push(arguments);
            _console[level].apply(_console, arguments);
        }
    });
}());

答案 4 :(得分:0)

我放弃了,只是做了以下事情:

// At beggining
window.logs = [];

// Just push the logs
window.logs.push(err)
window.logs.push(string)

然后,您可以通过键入,登录来检查开发人员控制台日志屏幕中的日志。

答案 5 :(得分:0)

您只需点击此处的圆形箭头,然后重新启动您的网络直播!

Web Inspector