IBM Worklight 6.0 - 如何将日志写入文件并将它们发回?
Posted
技术标签:
【中文标题】IBM Worklight 6.0 - 如何将日志写入文件并将它们发回?【英文标题】:IBM Worklight 6.0 - How to write logs to a file and send them back? 【发布时间】:2014-01-06 02:12:23 【问题描述】:我正在使用 worklight 6.0,并且能够使用 WL.Logger.debug("msg");
将数据记录到控制台。
我的问题是:如何将所有这些日志写入文件?
我的要求是将这些日志存储在移动设备本身上,以便在出现问题时,用户可以通过附加该日志文件来报告问题。在应用程序中会有一个“报告问题”菜单,如果用户单击该菜单,则会打开电子邮件并自动附加此日志。
【问题讨论】:
哪个“控制台”?您是否将这些日志放在适配器代码中?应用代码? javascript?爪哇? test/prod 环境中使用的应用服务器是什么...? 我想将所有用应用程序代码(即javascript)编写的日志写入文件。我正在为测试环境使用 Websphere 8.5 完整配置文件 我在应用程序 js 文件中编写日志语句,并且我在 worklight 控制台中看到这些不是特定于现在的环境,以后我需要同时用于 android 和 iphone 环境。但是当我在测试/生产环境中部署相同的东西时,我需要查看所有日志,我可以在哪里查看以及我需要做哪些设置? 阅读我编辑的答案。 好的。明白了。谢谢Adan。还有一个问题,如何将适配器代码中的日志语句写入文件? 【参考方案1】:服务器端日志记录(适配器):
Logging and monitoring mechanisms WL.Logger.debug, info, warn, and error相关问题:Worklight 5.0.6.1 - System.out.println() logging from Worklight adapter is not working
基本上,您需要更改应用服务器的server.xml
中的日志记录级别,以便能够查看不同的日志记录数据。您还可以在那里决定哪个文件将存放这些日志(默认为messages.log) - 请参阅文档以了解基于您的应用程序服务器的位置。
客户端日志记录(应用程序):
The WL.Logger object(阅读此文!)相关问题:How to use WL.Logger api to output log messages to a file
如果您想存储日志行并稍后将它们发送回某个后端系统,您可以use a Callback function to send the logs to a file on your server
示例代码:
在这段代码中,logHandler()
函数只处理我决定要处理的包,方法是为我要登录应用程序的特定日志创建一个新的 Logger
对象(“appLogic”)。
例如,您需要在自己的应用程序中做的不是显示alert()
,而是将这些日志行保存在一个文件中,然后在需要时将它们发送回您的后端,而不是use the Cordova File API通过 Worklight Adapters 或 AJAX 调用或电子邮件应用程序等...
common\js\main.js:
var appLogic = new WL.Logger.create(pkg: 'appLogic'); function wlCommonInit() appLogic.debug("log from app");
common\js\initOptions.js:
var wlInitOptions = connectOnStartup : false, analytics : enabled: false //url : '' , logger : enabled: true, level: 'debug', stringify: true, pretty: false, tag: level: false, pkg: true, whitelist: [], blacklist: [], callback: logHandler, ; function logHandler(message, priority, pkg) if (pkg == 'appLogic') alert (message); if (window.addEventListener) window.addEventListener('load', function() WL.Client.init(wlInitOptions); , false); else if (window.attachEvent) window.attachEvent('onload', function() WL.Client.init(wlInitOptions); );
【讨论】:
谢谢阿丹。明白了。但是我们可以将这些日志存储在移动设备本身吗?要求是这样的,我应该将日志存储在移动设备上。如果出现问题,用户应该能够通过附加该日志文件来报告问题。那里将是菜单“报告问题”,如果用户单击该菜单,则会打开电子邮件并自动附加此日志。 查看我编辑的答案,了解发送回日志文件的可能方式。 var wlInitOptions = logger : enabled: true, level: 'debug', stringify: true, pretty: false, tag: level: false, pkg: true, 白名单: [],黑名单:[],回调:logHandler,分析:启用:假; if (window.addEventListener) window.addEventListener('load', function() WL.Client.init(wlInitOptions); , false); else if (window.attachEvent) window.attachEvent('onload', function() WL.Client.init(wlInitOptions); ); var logHandler = function (message, priority, pkg) alert('Written in Log File'); ; 这是我的 initOptions.js,logHandler 函数不会为每个写入控制台的日志调用。请帮助我 您需要将 var logHandler 放在 var wlInitOptions 之上,或者将其声明为函数而不是变量。请参阅我编辑的答案。以上是关于IBM Worklight 6.0 - 如何将日志写入文件并将它们发回?的主要内容,如果未能解决你的问题,请参考以下文章
IBM Worklight 6.0 - Windows Phone 8 的报告日志比其他环境显示 USER_AGENT
如何在 IBM Worklight 6.0 中实现 OAUTH 2.0