express-router-bunyan-loglevel

1.0.1 • Public • Published

Router

NPM version Build Status Coverage Status Dependencies

Express router to set the log level(s) of a Bunyan logger.

Installation

$ npm install express-router-bunyan-loglevel

Usage

var createRouter = require( 'express-router-bunyan-loglevel' );

createRouter( logger )

Returns an Express router configured to use a Bunyan logger.

var bunyan = require( 'bunyan' );
 
var logger = bunyan.createLogger({
    'name': 'logger',
    'streams': [
        {
            'name': 'main',
            'level': 'info',
            'stream': process.stdout
        }
    ]
});
 
var router = createRouter( logger );

router

A mountable Express route handler.

var express = require( 'express' );
 
// Create a new application:
var app = express();
 
// Mount the route handler on the application:
app.use( '/logger', router );

Routes

PUT /loglevel

URI endpoint for setting the server application global log level.

Request: (application/json)

The request should include a JSON body having the following fields:

  • level: log level. The level may be specified as either a string or number. The string may be one of the following (see node-bunyan; string options listed along with their numeric equivalents):
    • (60) fatal
    • (50) error
    • (40) warn
    • (30) info
    • (20) debug
    • (10) trace
{
    "level": <string|number>
}
Response: 204 (text/plain)

The response body will be

OK
Error: 400 (application/json)

If a request contains invalid body parameters, an error response will contain the error status and an associated message.

{
    "status": 400,
    "message": "...'"
}
Examples

From the command-line,

$ curl -X PUT -d '{"level":"info"}' 'http://127.0.0.1:<port>/loglevel' --header "Content-type:application/json"

From another Node application,

var request = require( 'request' );
 
var body = {
    'level': 'info'
};
 
request({
    'uri': 'http://127.0.0.1:<port>/loglevel',
    'method': 'PUT',
    'json': body
}, onResponse );
 
function onResponse( error, response, body ) {
    if ( error ) {
        console.error( error );
        return;
    }
    console.log( body );
}

A successful request will receive the following response body:

OK

===

PUT /loglevel/:name

URI endpoint for setting the log level for a log stream specified by the name parameter.

Request: (application/json)

The request should include a JSON body having the following fields:

  • level: log level. The level may be specified as either a string or number. The string may be one of the following (see node-bunyan; string options listed along with their numeric equivalents):
    • (60) fatal
    • (50) error
    • (40) warn
    • (30) info
    • (20) debug
    • (10) trace
{
    "level": <string|number>
}
Response: 204 (text/plain)

The response body will be

OK
Error: 400 (application/json)

If a request contains invalid body parameters, an error response will contain the error status and an associated message.

{
    "status": 400,
    "message": "...'"
}
Examples

From the command-line,

$ curl -X PUT -d '{"level":"info"}' 'http://127.0.0.1:<port>/loglevel/<name>' --header "Content-type:application/json"

From another Node application,

var request = require( 'request' );
 
var body = {
    'level': 'info'
};
 
request({
    'uri': 'http://127.0.0.1:<port>/loglevel/<name>',
    'method': 'PUT',
    'json': body
}, onResponse );
 
function onResponse( error, response, body ) {
    if ( error ) {
        console.error( error );
        return;
    }
    console.log( body );
}

A successful request will receive the following response body:

OK

Examples

var bunyan = require( 'bunyan' ),
    request = require( 'request' ),
    express = require( 'express' ),
    createRouter = require( 'express-router-bunyan-loglevel' );
 
 
// LOGGER //
 
var logger = bunyan.createLogger({
    'name': 'logger',
    'streams': [
        {
            'name': 'beep',
            'level': 'info',
            'stream': process.stdout
        },
        {
            'name': 'boop',
            'level': 'debug',
            'stream': process.stdout
        }
    ]
});
 
 
// APP //
 
var app = express();
 
// Mount the router on the application:
app.use( '/', createRouter( logger ) );
 
// Create an HTTP server:
app.listen( 7331, onListen );
 
function onListen() {
    logger.info( 'Server is listening for requests on port: 7331.' );
    run();
}
 
 
// RUN //
 
function run() {
    setTimeout( setOne, 1000 );
    setTimeout( setAll, 2500 );
    setTimeout( exit, 3000 );
}
 
function setOne() {
    request({
        'method': 'PUT',
        'uri': 'http://127.0.0.1:7331/loglevel/beep',
        'json': {
            'level': 'fatal'
        }
    }, onResponse );
}
 
function setAll() {
    request({
        'method': 'PUT',
        'uri': 'http://127.0.0.1:7331/loglevel',
        'json': {
            'level': 'warn'
        }
    }, onResponse );
}
 
function onResponse( error, response ) {
    if ( error ) {
        throw error;
    }
    console.log( 'Status: %s.', response.statusCode );
}
 
function exit() {
    process.exit( 0 );
}

To run the example code from the top-level application directory,

$ node ./examples/index.js

Tests

Unit

Unit tests use the Mocha test framework with Chai assertions. To run the tests, execute the following command in the top-level application directory:

$ make test

All new feature development should have corresponding unit tests to validate correct functionality.

Test Coverage

This repository uses Istanbul as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:

$ make test-cov

Istanbul creates a ./reports/coverage directory. To access an HTML version of the report,

$ make view-cov

License

MIT license.

Copyright

Copyright © 2015. Athan Reines.

Dependents (0)

Package Sidebar

Install

npm i express-router-bunyan-loglevel

Weekly Downloads

1

Version

1.0.1

License

MIT

Last publish

Collaborators

  • kgryte