Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,9 @@ Make sure enableHttpContext is set as true in config.json for to allow collectio
- Additional Unit Test and Coverage
- Integrate with Strongloop Devops tools

# Known Issue
- datasources performance will not recorded at times when loopback context is null. Noticed this issue when a composite called MongoDB followed by REST. Only MongoDB response time was recorded and REST was missing.

# See Also

- [Loopback][loopback]
Expand Down
29 changes: 15 additions & 14 deletions lib/hooks/connectorHook.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ var restKey = function(ctx,name) {
};

var mongoKey = function(ctx,name) {
return ctx.req.command;
return ctx.model + '-' + ctx.req.command;
};

var memoryKey = function(ctx,name) {
Expand All @@ -18,7 +18,7 @@ var memoryKey = function(ctx,name) {
var connectorObj = {
'rest' : restKey,
'memory' : memoryKey,
'mongo' : mongoKey
'mongodb' : mongoKey
};

var loadHooks = function(app, config) {
Expand All @@ -32,24 +32,25 @@ var loadHooks = function(app, config) {

connector.observe('before execute', function(ctx, next) {

var currentCtx = app.loopback.getCurrentContext();
if(currentCtx && currentCtx.active && currentCtx.active.http) {
var context = currentCtx.active.http;
var key = connectorObj[type] && connectorObj[type](ctx,name);
context.res.perf = context.res.perf || {};
context.res.perf[name] = context.res.perf[name] || {};
context.res.perf[name][key] = responseTime();
}
ctx.perf = responseTime();
next();
});

connector.observe('after execute', function(ctx, next) {

var currentCtx = app.loopback.getCurrentContext();
if(currentCtx && currentCtx.active && currentCtx.active.http) {
var context = currentCtx.active.http;
var loopbackContext = app.loopback.getCurrentContext();
if(loopbackContext && loopbackContext.active && loopbackContext.active.http) {
var httpContext = loopbackContext.active.http;
var key = connectorObj[type] && connectorObj[type](ctx,name);
context.res.perf[name][key] = responseTime(context.res.perf[name][key]);
httpContext.res.perf = httpContext.res.perf || {};
httpContext.res.perf[name] = httpContext.res.perf[name] || [];

var perfData = {
'key' : key,
'responseTime' : responseTime(ctx.perf)
};

httpContext.res.perf[name].push(perfData);
}
next();
});
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "loopback-component-logger",
"version": "0.2.1",
"version": "0.2.2",
"description": "Logging component for loopback",
"main": "index.js",
"scripts": {},
Expand Down