如何在Cordova iOS运行时记录所有控制台消息?

5
当我在Cordova上的iOS中运行我的WKWebview应用程序时,我使用console.debugconsole.info记录在我的Web应用程序中的信息不会输出到Xcode控制台或日志中。然而console.log消息确实被输出。我该如何获取所有的日志消息输出?
1个回答

11
经过大量研究和审查 cordova.js 的源代码,我意识到在 iOS 环境下运行时,Cordova 会覆盖掉控制台对象,这也就是为什么我的 console.info 消息无法被记录的原因。默认情况下,只有 console.logconsole.errorconsole.warn 消息会被输出。原因是因为 Cordova 日志支持以下日志级别:
  • LOG
  • ERROR
  • WARN <-- 默认级别
  • INFO
  • DEBUG
警告是默认的日志级别,这意味着只有在警告级别及以上的消息才会被输出,因此只有使用 console.warnconsole.errorconsole.log 打印的消息才会输出。如需更改日志级别,请按以下步骤操作: 1) 类似于使用 Cordova 的 exec 函数加载其模块一样,在 JavaScript 中加载 Cordova 日志器模块。要加载日志记录器模块,请将以下内容添加到您的 JavaScript 文件中:

var logger = require('cordova/plugin/ios/logger');

2) 接下来,如果您想将默认的日志记录级别从WARN更改为其他级别(如DEBUG),您只需要在初始化代码的适当位置添加以下调用即可。您应该根据您的应用程序决定在哪里插入此代码,但是步骤1中声明的logger模块必须在作用域内。

logger.level('DEBUG');

您可以使用如上所述的级别:'LOG', 'ERROR', 'WARN', 'INFO', 'DEBUG'

或者,您还可以使用Cordova日志记录模块定义的级别常量:logger.LOG, logger.ERROR, logger.WARN, logger.INFO, logger.DEBUG。我没有尝试过,但它应该可以工作。

希望这能帮助其他人节省时间,因为我找不到任何关于此的文档。


请注意,在运行时您需要在cordova命名空间上使用requirevar logger = cordova.require('cordova/plugin/ios/logger'); - DaveAlden

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接