Ibm mobilefirst 它不是WLClientLogReceiver适配器的回调函数

Ibm mobilefirst 它不是WLClientLogReceiver适配器的回调函数,ibm-mobilefirst,worklight-adapters,Ibm Mobilefirst,Worklight Adapters,我已经在initOptions.js中启用了nativeOptions:{capture:true} 记录器:{enabled:true,level:'debug',stringify:true,pretty:false, 标记:{level:false,pkg:true},白名单:[],黑名单:[],nativeOptions:{capture:true} 在我的主js文件中,我有以下代码 function wlCommonInit(){ // Common initialization co

我已经在initOptions.js中启用了nativeOptions:{capture:true}


记录器:{enabled:true,level:'debug',stringify:true,pretty:false, 标记:{level:false,pkg:true},白名单:[],黑名单:[],nativeOptions:{capture:true}

在我的主js文件中,我有以下代码

function wlCommonInit(){
// Common initialization code goes here
WL.Logger.setNativeOptions({'capture': true});

var logger = WL.Logger.create({pkg: 'mypackage'});

logger.debug('Hello world - debug');
//[mypackage] Hello world

logger.log('Hello world - log');
//[mypackage] Hello world

logger.info('Hello world - info');
//[mypackage] Hello world

logger.warn('Hello world - warn');
//[mypackage] Hello world

logger.error('Hello world - error');
//[mypackage] Hello world
WL.Logger.send();  }
假设调用我的适配器“WLClientLogReceiver”。但是我没有接到任何关于这个适配器的电话

请让我知道,我需要启用任何其他设置以将客户端捕获的日志上载到服务器

 function log(deviceInfo, logMessages) {
 return true;}

<procedure name="log" securityTest="wl_unprotected" audit="true" />
功能日志(设备信息、日志消息){
返回true;}

发送
功能未附加到
LogInstance
原型,这是使用使用
WL.logger.create()创建的记录器实例时所使用的。请打电话

WL.Logger.send();
相反

(以上内容在OP编辑之前发布)。

由于
setNativeOptions
是一个异步调用(通过Cordova插件调用),因此在后续
logger
调用完成之前,它可能没有成功打开捕获。因此在调用
WL.Logger.send()时尚未收集任何内容

这样做:

function wlCommonInit() {
    // Common initialization code goes here
    WL.Logger.setNativeOptions({'capture': true})

    .then(function() {

        var logger = WL.Logger.create({pkg: 'mypackage'});

        logger.debug('Hello world - debug');
        //[mypackage] Hello world

        logger.log('Hello world - log');
        //[mypackage] Hello world

        logger.info('Hello world - info');
        //[mypackage] Hello world

        logger.warn('Hello world - warn');
        //[mypackage] Hello world

        logger.error('Hello world - error');
        //[mypackage] Hello world

        WL.Logger.send();

    });
}

send
函数未附加到
LogInstance
原型,这是您在使用使用
WL.logger.create()创建的记录器实例时使用的原型。请打电话

WL.Logger.send();
相反

(以上内容在OP编辑之前发布)。

由于
setNativeOptions
是一个异步调用(通过Cordova插件调用),因此在后续
logger
调用完成之前,它可能没有成功打开捕获。因此在调用
WL.Logger.send()时尚未收集任何内容

这样做:

function wlCommonInit() {
    // Common initialization code goes here
    WL.Logger.setNativeOptions({'capture': true})

    .then(function() {

        var logger = WL.Logger.create({pkg: 'mypackage'});

        logger.debug('Hello world - debug');
        //[mypackage] Hello world

        logger.log('Hello world - log');
        //[mypackage] Hello world

        logger.info('Hello world - info');
        //[mypackage] Hello world

        logger.warn('Hello world - warn');
        //[mypackage] Hello world

        logger.error('Hello world - error');
        //[mypackage] Hello world

        WL.Logger.send();

    });
}

确保检查服务器端日志。适配器描述符文件中的
audit=“true”
将在服务器日志(WebSphereLiberty上的messages.log)内联打印传递给适配器的参数。

请确保检查服务器端日志。适配器描述符文件中的
audit=“true”
将在服务器日志(WebSphereLiberty上的messages.log)内联打印传递给适配器的参数。

记录器:{启用:true,级别:debug,stringify:true,pretty:false,标记:{level:false,pkg:true},白名单:[],黑名单:[],nativeOptions:{capture:true}

您已在initOptions.js中将本机捕获启用为true,因此无需再次设置

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

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

In the adapter you will get the log messages as an json array.
功能日志(设备信息、日志消息){

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

 The deviceInfo object may look like this:
 {
   "appName":       "wlapp",
   "appVersion":    "1.0",
   "deviceId":      "66eed0c9-ecf7-355f-914a-3cedac70ebcc",
   "model":         "Galaxy Nexus - 4.2.2 - API 17 - 720x1280",
   "systemName":    "Android",
   "systemVersion": "4.2.2",
   "os.arch":       "i686",           // Android only
   "os.version":    "3.4.0-qemu+"     // Android only
  }
  The logMessages parameter is a JSON array 
  that contains JSON object elements, and might look like this:

    [{
      "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 filteredLogs = logs.filter(function(log){
           if(log.package == mypackage) //comparing the package and returns the object
                { return log; }   
});

WL.Logger.error(filteredLogs);// This is send only the filtered array to your server

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

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

var logs = JSON.stringify(JSON.parse(logs));
var filteredLogs = logs.filter ...
希望这对你有用


确保使用设备测试它。

记录器:{enabled:true,level:'debug',stringify:true,pretty:false,标记:{level:false,pkg:true},白名单:[],黑名单:[],nativeOptions:{capture:true}

您已在initOptions.js中将本机捕获启用为true,因此无需再次设置

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

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

In the adapter you will get the log messages as an json array.
功能日志(设备信息、日志消息){

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

 The deviceInfo object may look like this:
 {
   "appName":       "wlapp",
   "appVersion":    "1.0",
   "deviceId":      "66eed0c9-ecf7-355f-914a-3cedac70ebcc",
   "model":         "Galaxy Nexus - 4.2.2 - API 17 - 720x1280",
   "systemName":    "Android",
   "systemVersion": "4.2.2",
   "os.arch":       "i686",           // Android only
   "os.version":    "3.4.0-qemu+"     // Android only
  }
  The logMessages parameter is a JSON array 
  that contains JSON object elements, and might look like this:

    [{
      "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 filteredLogs = logs.filter(function(log){
           if(log.package == mypackage) //comparing the package and returns the object
                { return log; }   
});

WL.Logger.error(filteredLogs);// This is send only the filtered array to your server

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

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

var logs = JSON.stringify(JSON.parse(logs));
var filteredLogs = logs.filter ...
希望这对你有用


确保使用设备对其进行测试。

您是否有logcat或xcode控制台日志?服务器日志如何?WL client+server的版本如何?WLClientLogReceiver.xml描述符文件的内容是什么?适配器中实现的过程是什么?感谢您的编辑。服务器日志文件中没有任何指示(messages.log on liberty)适配器名为?logcat或xcode console没有尝试发送的迹象?Worklight Studio版本6.1 FixPack 1。服务器日志在Worklight Studio、Eclipse IDE中的位置是什么。非常感谢。我想它在Worklight console日志或xcode/log cat控制台中会有一些指示。它在messages.log中可用。它的工作ng find并已将日志上载到服务器。您是否有logcat或xcode控制台日志?服务器日志如何?WL client+server的版本是什么?WLClientLogReceiver.xml描述符文件的内容是什么?您在适配器中实现的过程是什么?感谢编辑。服务器日志文件中没有指示e(messages.log on liberty)适配器名为?logcat或xcode console没有尝试发送的迹象?Worklight Studio版本6.1 FixPack 1。服务器日志在Worklight Studio、Eclipse IDE中的位置是什么。非常感谢。我想它在Worklight console日志或xcode/log cat控制台中会有一些指示。它在messages.log中可用。它的工作ng查找,日志已上载到