@wiredcraft/bunyan-logger-factory

1.3.1 • Public • Published

Why I create this libray

From time to time, I found I have to create Bunyan instance with different streams(stdout/file/syslog) for different environments.

How to use

const loggerFactory = require('bunyan-logger-factory');

const myLogger = loggerFactory.init({
  logName: 'my-logger-name',
  logStreams: [
    {
      streamType: process.env.LOGSTREAM,
      streamHost: process.env.LOGHOST,
      streamPort: process.env.LOGPORT,
      streamProto: process.env.LOGPROTO,
    }
  ],
});

Advanced usage

You can also set the transformation to the logger.

constant

const loggerFactory = require('bunyan-logger-factory');

const myLogger = loggerFactory.init({
  logName: 'my-logger-name',
  logStreams: [
    {
      streamType: process.env.LOGSTREAM,
      streamHost: process.env.LOGHOST,
      streamPort: process.env.LOGPORT,
      streamProto: process.env.LOGPROTO,
    }
  ],
  transform: [
    {
      constant: {
        ipsum: 'xxx',
      },
    },
  ],
});

This will add ipsum: xxx to each log created.

clone

const loggerFactory = require('bunyan-logger-factory');

const myLogger = loggerFactory.init({
  logName: 'my-logger-name',
  logStreams: [
    {
      streamType: process.env.LOGSTREAM,
      streamHost: process.env.LOGHOST,
      streamPort: process.env.LOGPORT,
      streamProto: process.env.LOGPROTO,
    }
  ],
  transform: [
    {
      clone: {
        msg: 'message',
        time: 'timestamp',
      },
    },
  ],
});

This will generate two extra fields message and timestamp which have exact same value as msg and `time**.

map

const loggerFactory = require('bunyan-logger-factory');
const fn = (v) => {return v + v;};

const myLogger = loggerFactory.init({
  logName: 'my-logger-name',
  logStreams: [
    {
      streamType: process.env.LOGSTREAM,
      streamHost: process.env.LOGHOST,
      streamPort: process.env.LOGPORT,
      streamProto: process.env.LOGPROTO,
    }
  ],
  transform: [
    {
      map: {
        foo: fn,
      },
    },
  ],
});

This will populate the value of foo by calling the fn function.

avoidChildTransform

By default, the logger.child will inherit the transformation you set on the parent if there is a tranform in the init function, you can set avoidChildTransform to true to prevent that behavior.

const logger = loggerFactory.init({
  logName: 'test-logger',
  logStreams: [
    {
      streamType: 'FILE',
      streamPath: filePath,
    }
  ],
  avoidChildTransform: true, // the transform only applies on the current logger instance.
  transform: [
    {
      constant: {
        ipsum: 'xxx',
      },
    },
  ],
});

multi streams

It's possible to add multiple stream configs in logStreams.

const logger = loggerFactory.init({
  logName: 'multiStream',
  logStreams: [
    {
      streamType: 'stdout'
    }, 
    {
      streamType: 'syslog',
      streamHost: 'localhost',
      streamPort: 514,
      streamProto: 'tcp'
    }
  ]
});

License

MIT

Readme

Keywords

Package Sidebar

Install

npm i @wiredcraft/bunyan-logger-factory

Weekly Downloads

37

Version

1.3.1

License

MIT

Unpacked Size

9.32 kB

Total Files

5

Last publish

Collaborators

  • agreatfool
  • stefan1105
  • apexblade
  • miffyliye
  • dejandoder
  • linrz
  • koknikol
  • eronekogin
  • aleksandar5595
  • shuaibird
  • dmwc
  • kunlun8809
  • draganmijajilovic
  • wiredcraft-bot
  • xavierchow
  • kaleocheng
  • flyingant
  • superbogy
  • lalawow
  • juhas