NodeClipse Eclipse plug-in for Node.js does not work with the embedded V8 Debugger.
Instead I accessed the JavaScript Application module exports to do reflection with Node.js apps since "this" object is empty.
Here is the code:
app.js code: User.prototype.sayGoodBye = function(){
console.log('Good Bye ' +
this.name);
};
exports.User = User;
trace-meldaround.js Code:
var meld, joinPoint;
meld = require('./meld.js');
joinPoint = meld.joinpoint;
var log4js = require('./node_framework/log4js-node-master/lib/log4js'); // include log4js
log4js.configure({ // configure to use all types in different files.
appenders: [
{ type: 'file',
filename: '../logs/error.log', // specify the path where u want logs folder error.log
category: 'error',
maxLogSize: 20480,
backups: 10
},
{ type: 'file',
filename: '../logs/info.log', // specify the path where u want logs folder info.log
category: 'info',
maxLogSize: 20480,
backups: 10
},
{ type: 'file',
filename: '../logs/debug.log', // specify the path where u want logs folder debug.log
category: 'debug',
maxLogSize: 20480,
backups: 10
}
]
});
var loggerinfo = log4js.getLogger('info'); // initialize the var to use.
var loggererror = log4js.getLogger('error'); // initialize the var to use.
var loggerdebug = log4js.getLogger('debug'); // initialize the var to use.
var Trace = function(AppName){
this.appName = AppName;
};
Trace.prototype.doTrace = function(){
function sayMeld(jp) {
console.log('meldaround function called for Application : ' + Trace.constructor.AppName);
console.log('JoinPoint Method: ' + jp.method);
console.log('JoinPoint Target: ' + jp.target);
console.log('JoinPoint Args: ' + jp.args.toString());
console.log('JoinPoint Result: ' + jp.result);
console.log('JoinPoint Exception: ' + jp.exception);
loggerinfo.info('Calling Method: ' + jp.method);
loggererror.info('This is Error Logger');
loggerdebug.info('JoinPoint Method: ' + jp.method);
loggerdebug.info('JoinPoint Target: ' + jp.target);
loggerdebug.info('JoinPoint Args: ' + jp.args.toString());
loggerdebug.info('JoinPoint Result: ' + jp.result);
loggerdebug.info('JoinPoint Exception: ' + jp.exception);
}
var appObjects = module.parent.children;
var methods = [];
var objects = [];
for (var i=0; i<appObjects.length;i++){
if (typeof appObjects[i] == 'object'){
objects.push(appObjects[i]);
var funcObj = appObjects[i].exports;
if (typeof funcObj == 'object')
{
for (var key in funcObj){
var k =0;
var prototypeObj = funcObj[key].prototype;
methods[i] = [];
for (var proto in prototypeObj){
methods[i][k] = proto;
k++;
}
}
}
}
}
for (var j=0; j<objects.length; j++){
var ObjectName;
for (var key2 in objects[j].exports){
ObjectName = key2;
console.log(objects[j].exports[ObjectName].prototype);
for (var n=0; n<methods[j].length; n++){
if (ObjectName != 'Trace'){
meld.around(objects[j].exports[ObjectName].prototype, methods[j][n], function(joinPoint){
sayMeld(joinPoint);
joinPoint.proceed();
});
}
}
}
}
};
exports.Trace = Trace;
On Monday, January 12, 2015 at 8:39:27 AM UTC-5, Leo Cono wrote: