feathers-profiler

0.1.5 • Public • Published

feathers-profiler

Greenkeeper badge

Build Status Code Climate Test Coverage Dependency Status Download Status

Log service method calls and gather profile information on them.

Installation

npm install feathers-profiler --save

Example

npm start

Documentation

Service calls transported by websockets are not passed through Express middleware. feathers-profiler logs service calls from all transports and gathers performance information on them.

import { profiler, getProfile, clearProfile, getPending, timestamp } from 'feathers-profiler';

app.configure(profiler(options))

Start logging and/or profiling service calls.

Options:

  • logger
    • defaults to logging on console.log.
    • null disables logging.
    • require('winston') routes logs to the popular winston logger.
    • { log: payload => {} } routes logs to your customized logger.
  • logMsg
    • default message is shown below.
    • hook => {} returns a custom string or object payload for the logger. hook._log contains log information; hook.original and hook.error contain error information.
  • stats
    • null or 'none' profile information will not be gathered.
    • total gathers profile information by service and method only. The default.
    • detail gathers profile information by characteristics of the call.
  • statsDetail
    • default is shown below.
    • hook => {} returns a custom category for the call.

getProfile()

Returns profile information as an object.

clearProfile()

Re-initializes the profile information. The profile internal counts may not add up perfectly unless getPending() === 0.

getPending()

Returns the number of currently pending service calls.

timestamp()

Returns a timestamp suitable for logging to the console.

Example

const feathers = require('feathers');
const rest = require('feathers-rest');
const sockets = require('feathers-socketio');
const hooks = require('feathers-hooks');
const bodyParser = require('body-parser');
const errorHandler = require('feathers-errors/handler');
 
const { profiler, getProfile, getPending }  = require('feathers-profiler');
 
// Initialize the application
const app = feathers()
  .configure(rest())
  .configure(sockets())
  .configure(hooks())
  .use(bodyParser.json()) // Needed for parsing bodies (login)
  .use(bodyParser.urlencoded({ extended: true }))
  .use('users', { ...}) // services
  .use('messages', { ... })
  .configure(profiler({ stats: 'detail' }) // must be configured after all services
  .use(errorHandler());
  
  // ... once multiple service calls have been made
  console.log('pending', getPending());
  console.log(require('util').inspect(getProfile(), {
    depth: 5,
    colors: true
  }));

Usage

Logs service calls

The log message may be customized. The default log message includes:

  • Service name, method and transport provider.
  • Elapsed time between the method being called and its completion.
  • Number of service calls pending when call was made.
  • Where service call failed and why.

logs

Gathers profile information on service calls

Profile information is:

  • Grouped by service and method.
  • Grouped by characteristics of the call. These may be customized.
  • Average pending count provides information on how busy the server was during these calls.
  • Average, min and max elapsed time provide information on how responsive the server is.
  • The number of returned items provides information on how large the find results were.

stats

License

Copyright (c) 2016

Licensed under the MIT license.

Package Sidebar

Install

npm i feathers-profiler

Weekly Downloads

930

Version

0.1.5

License

MIT

Last publish

Collaborators

  • eddystop