如何使用WL.Logger api将日志消息输出到文件

时间:2013-08-15 09:18:33

标签: ibm-mobilefirst

我正在使用IBM Worklight框架开发iOS应用程序。我想在我的代码运行时记录消息,例如“应用程序启动成功!”

我的问题是

如何使用WL.Logger api记录消息?

1 个答案:

答案 0 :(得分:1)

Worklight 6.0:

查看IBM InfoCenter内部更新的WL.Logger功能(herehere)。特别是允许您set a callback的部分。

打开initOptions.js并添加create一个回调函数,该函数将在每个日志消息发送到控制台后调用:

var logHandler = function (message, priority, pkg) {
    //... write to a file or send logs to a server
}; 

您可以使用Cordova File API将日志消息写入设备上的文件(或JSONStore,LocalStorage,Cordova Storage等)。稍后(setInterval)您可以读取该文件的内容并使用适配器(或jQuery.ajax等)将其发送到服务器。在服务器上,您可以use Java inside Adapterswrite to files ...或写入数据库,ElasticSearch Clusterdata infrastructure cloud offering等。

var wlInitOptions = {

    connectOnStartup : true,

    logger : {enabled: true, level: 'debug', stringify: true, pretty: false,
        tag: {level: false, pkg: true}, whitelist: [], blacklist: [], callback: logHandler}

};

请注意上面代码块中的callback: logHandler

6.0之前的Worklight:

此功能不是Worklight 6.0之前的WL.Logger的一部分,但您可以实现它。例如:

//Implementation:
var LoggerWrapper = (function (callback) {

    var _cb, _ctx;

    return {

        setCallbackAndContext : function (cb, ctx) {
            _cb = cb;
            _ctx = ctx;
        }

        log : function () {
            console.log.apply(console, arguments);
            _cb(_ctx, arguments)

        }
    }

})();

//Usage:
LoggerWrapper.setCallbackAndContext(functionThatCallsAdapter, ObjectThatHasNetworkEnvironmentInfoEtc);

LoggerWrapper.log('hello');

提供有用信息的API。 (上下文)可以附加到日志消息:

environment : WL.Client.getAppProperty(WL.AppProp.ENVIRONMENT)
appName : WL.Client.getAppProperty(WL.AppProp.APP_DISPLAY_NAME)
appVersion : WL.Client.getAppProperty(WL.AppProp.APP_VERSION)
deviceContext : WL.Device.getContext() //see Location Services API
network: WL.Device.getNetworkInfo() //async
timestamp: new Date()

调试模式

许多应用程序通过启用“调试模式”捕获额外的日志并将其发送到服务器,而不是默认情况。

debug mode example

运营分析

如果您配置了新的Operational Analytics feature,则只需在回调中调用WL.Analytics.loglogHandler)即可。传递日志消息,它们将显示在Analytics Search View