winston-axon

    2.0.0 • Public • Published

    winston-axon

    This is a message oriented Transport for winston based on axon-secure.

    Motivation

    If you have a large application with a lot of independent services, you can easy log every service with a unique socket logging endpoint using axon-secure as message-oriented library.

    Installation

    Install winston-axon as usual:

    $ npm install winston-axon
    

    Options

    When you add winston-axon to your winston logger, you can provide this options:

    • host: (Default: 127.0.0.1) Remote host of the socket logging endpoint
    • port: (Default: 3000) Remote port of the socket logging endpoint
    • timestamp: (Default false) Boolean flag indicating if we should add a timestamp to the output. If function is specified, its return value will be used instead of timestamps
    • secure: (Default: false) set true to encrypt every message
    • cipher: (Default: aes256) the cipher used for encryption
    • secret: (Default: secret remember to change it!) the shared password for encryption.

    Usage

    To use this plugin you must have a socket logging endpoint (server) and at least a logger (client).

    Server

    Create your own server use this simple example:

    // dependencies
    var axon = require('axon-secure');
    var winston = require('winston');
    
    // set socket with encryption
    var sock = axon.socket('pull', {
      secure: true,
      cipher: 'aes256',
      secret: 'password'
    });
    // or set socket without encryption
    // var sock = axon.socket('pull');
    sock.bind('tcp://127.0.0.1:3000');
    
    // create a customized Console Transport
    var consoleTransport = new winston.transports.Console({
      level: 'debug',
      colorize: true,
      timestamp: false
    });
    
    // create new Logger
    var logger = new (winston.Logger)({
      transports: [
        consoleTransport // add other Transport types if you need
      ],
      exitOnError: true
    });
    
    // wait for incoming logs
    sock.on('message', function(msg) {
      logger.log(msg.level, msg);
    });
    
    logger.info('server started');
    

    Save as server.js and start the server:

    $ node server.js
    
    info: server started
    

    Client

    Into the client simply add winston-axon as new Transport to your winston instance:

    var winston = require('winston');
    var Axon = require('winston-axon').Axon;
    winston.add(Axon, {
      level: 'debug',
      timestamp: new Date(),
      secure: true,
      cipher: 'aes256',
      secret: 'password'
    });
    winston.debug({ message: 'Test Object Log Message', error: false });
    winston.log('info', 'Test Log Message', { anything: 'This is metadata' });
    

    Save as client.js and start it:

    $ node client.js
    
    info: Test Log Message anything=This is metadata
    

    Now in your previous terminal session (that when the server is running) you see this new lines:

    debug:  level=debug, message=Debug text only message, timestamp=2014-03-14T14:22:18.536Z
    debug:  custom=Test Object Log Message, error=false, level=debug, message=Debug exented message, timestamp=2014-03-14T14:22:18.537Z
    info:  anything=This is metadata, level=info, message=Test Log Message, timestamp=2014-03-14T14:22:18.538Z
    

    Note that into the client terminal you see only the info message whereas into the server terminal you see all messages because the server has a customized level of the Console Transport.

    For more information please refer to winston and axon-secure documentations.

    Run Tests

    Like other Transport plugins, all of the winston-axon tests are written in vows, and designed to be run with npm.

    $ npm test
    

    Install

    npm i winston-axon

    DownloadsWeekly Downloads

    1

    Version

    2.0.0

    License

    MIT

    Last publish

    Collaborators

    • mgesmundo