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 - 如何绑定数据源?

如何在 IBM Worklight 6.0 中实现 OAUTH 2.0

IBM Worklight 6.0 - 如何覆盖后退按钮?

IBM Worklight 6.0 - Worklight Starter Dojo 示例损坏?

IBM Worklight 6.0 - 无法访问 Worklight 服务器