Ibm mobilefirst 客户端日志捕获问题

Ibm mobilefirst 客户端日志捕获问题,ibm-mobilefirst,Ibm Mobilefirst,我正在尝试使用worklight 6.1提供的客户端日志捕获功能,如所示: 我做了以下工作: logger : {enabled: true, level: 'debug', stringify: true, pretty: false, tag: {level: false, pkg: true}, whitelist: [], blacklist: [], nativeOptions: {capture: false}}, 我设置了以下初始化选项: var wlInitO

我正在尝试使用worklight 6.1提供的客户端日志捕获功能,如所示:

我做了以下工作:

logger : {enabled: true, level: 'debug', stringify: true, pretty: false,
    tag: {level: false, pkg: true}, whitelist: [], blacklist: [],
    nativeOptions: {capture: false}},
  • 我设置了以下初始化选项:

    var wlInitOptions={ 分析:{ 已启用:false } };

  • 我创建了一个名为“WLClientLogReceiver”的HTTP适配器,它有一个在上面引用的信息中心页面中指定的日志过程。日志过程的定义方式与信息中心页面中指定的方式相同:

  • 日志过程的实现与信息中心上的相同,只是调用了WL.Logger.info()以显示在服务器端调用了日志过程:

    function log(deviceInfo, logMessages) {
        WL.Logger.info("Received device logs");
        return true;
    }
    
  • 在应用程序的某个地方,WL.Logger.info(“…”)被多次调用

  • 应用程序有一个按钮,它将调用 WL.Logger.send() 单击按钮时

  • 但是在测试中,我没有看到客户机日志被写入服务器日志。我看不到 WL.Logger.info(“收到的设备日志”); 调用表明WL.Logger.send()未调用lop适配器过程

    这个问题的解决方案是什么?或者我对WL.Logger.send()将调用日志过程的理解有误吗?

    首先,您的#1

    与调试日志捕获无关

    我怀疑应用程序中的日志捕获已关闭。

    在默认生成的Worklight应用程序中,initOptions.js文件具有以下内容:

    logger : {enabled: true, level: 'debug', stringify: true, pretty: false,
        tag: {level: false, pkg: true}, whitelist: [], blacklist: [],
        nativeOptions: {capture: false}},
    
    注意
    nativeOptions:{capture:false}
    。如果您在任何时候运行应用程序时,initOptions对象已就位,则日志捕获已关闭。您需要通过使用
    true
    值还原initOptions对象,或者通过调用

    WL.Logger.setNativeOptions({capture: true});
    

    或者直接使用等效的本机记录器API来重新打开捕获。

    记录器:{enabled:true,level:debug',stringify:true,pretty:false,tag:{level:false,pkg:true},白名单:[],黑名单:[],本机选项:{capture:true}

    必须在initOptions.js中将本机捕获启用为true

    您可以使用包登录,该包将帮助您根据WLClientLogReceiver适配器中的包筛选消息

    var myloggerObject = WL.Logger.create({pkg: 'mypackage'});
    myloggerObject.debug("Hello world");
    
    您可以在js文件中指定要登录到客户端设备的级别

    在适配器中,您将以json数组的形式获得日志消息。 功能日志(设备信息、日志消息){

    /*适配器可以选择处理这些参数,例如将它们转发到后端服务器进行安全保存和进一步分析

    deviceInfo对象可能如下所示: { “appName”:“wlapp”, “appVersion”:“1.0”, “设备ID”:“66eed0c9-ecf7-355f-914a-3cedac70ebcc”, “型号”:“Galaxy Nexus-4.2.2-API 17-720x1280”, “系统名”:“安卓”, “系统版本”:“4.2.2”, “os.arch”:“i686”,//仅限Android “os.version”:“3.4.0-qemu+”//仅限Android } logMessages参数是一个JSON数组 它包含JSON对象元素,可能如下所示:

        [{
          "timestamp"    : "17-02-2013 13:54:23:745",  // "dd-MM-yyyy hh:mm:ss:S"
          "level"        : "ERROR",                    // ERROR||WARN||INFO||LOG|| DEBUG
          "package"      : "your_tag",                 // typically a class name
          "msg"          : "the message",              // a helpful log message
          "threadid"     : 42,                         // (Android only)the current thread
          "metadata"     : { "$src" : "js" }           // metadata placed on the log call
    }]
    */
    
    //采样日志和过滤方法

    var logs= [{
      "timestamp"    : "17-02-2013 13:54:23:745",  // "dd-MM-yyyy hh:mm:ss:S"
      "level"        : "ERROR",                    // ERROR||WARN||INFO||LOG|| DEBUG
      "package"      : "your_tag",                 // typically a class name
      "msg"          : "the message",              // a helpful log message
      "threadid"     : 42,                         // (Android only)the current thread
      "metadata"     : { "$src" : "js" }           // metadata placed on the log call
    },
    {
      "timestamp"    : "17-02-2013 13:54:23:745",  // "dd-MM-yyyy hh:mm:ss:S"
      "level"        : "ERROR",                    // ERROR||WARN||INFO||LOG|| DEBUG
      "package"      : "mypackage",                 // typically a class name
      "msg"          : "my package message",              // a helpful log message
      "threadid"     : 42,                         // (Android only)the current thread
      "metadata"     : { "$src" : "js" }           // metadata placed on the log call
    }
    
    ])

    }

    如果使用诸如文件名之类的元数据以及调试消息进行日志记录,则将在“元数据”属性中的数组中获得这些元数据

    建议在解析适配器中的设备日志之前,对对象进行字符串化和解析,以避免出现错误

    var logs = JSON.stringify(JSON.parse(logs));
    var filteredLogs = logs.filter ...
    
    什么是环境?(安卓或iOS)
    var logs = JSON.stringify(JSON.parse(logs));
    var filteredLogs = logs.filter ...