Socket
Socket
Sign inDemoInstall

fwsp-logger

Package Overview
Dependencies
138
Maintainers
1
Versions
21
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    fwsp-logger

Provides logging via pino, and transport to elasticsearch


Version published
Maintainers
1
Install size
7.18 MB
Created

Readme

Source

Logger npm version

Summary

Provides a pino logger that ships its logs to elasticsearch, with rotating index support.

Usage

See Configuration for details on the logger plugin config options.

Use the HydraExpressLogger plugin for Hydra Express apps:

const HydraExpressLogger = require('fwsp-logger').HydraExpressLogger;
hydraExpress.use(new HydraExpressLogger());
hydraExpress.init(...);
hydraExpress.appLogger.info('information', {and: 'an object', with: 'some stuff'});
hydraExpress.appLogger.error({err: new Error('this will log a stack trace')});

// in a request handler
req.log.info('this will also log information about the current request');
req.log.error({err: new Error('this will log a stack trace')});

with corresponding entry in config.json:

"hydra": {
  "plugins": {
    "logger": {
      "serviceName": "foo-service",
      "toConsole": false,
      "noFile": true,
      "elasticsearch": {
        "host": "localhost",
        "port": 9200,
        "index": "local-dev"
      }
    }
  }
}

Or, use the HydraLogger plugin for Hydra services:

const HydraLogger = require('fwsp-logger').HydraLogger;
let hydraLogger = new HydraLogger();
let log = hydraLogger.getLogger();
hydra.use(hydraLogger);
hydra.init(...);
// use via hydra (recommended)
hydra.log('info', 'some info');
hydra.log('error', 'just a message, no stack trace');
// or use directly - useful if you need a stack trace
log.info('some info');
log.error({err: new Error('error with stack trace')});
log.error('just a message, no stack trace');

General usage (outside of Hydra):

const PinoLogger = require('fwsp-logger').PinoLogger,
      logger = new PinoLogger(
        {
          serviceName: 'my-app',             /* required - name of the app writing logs */
          logPath: '/custom/log-file.log',   /* optional, defaults to ${cwd()}/serviceName.log */
          elasticsearch: {
            host: 'your.elasticsearch.host.com',
            port: 9200,
            index: 'local-dev'
          }
        }
    );
const appLogger = logger.getLogger();
appLogger.error({err: 'An error happened'}); // pass {err} literal for proper error serialization
appLogger.info({
    message: 'Something else happened',
    details: {
      foo: 'bar',
      answer: 42
    }
});

Configuration

FieldDescriptionRequiredDefault
serviceNameName of the service doing the loggingNhydra.serviceName
logPathPath to log to if !noFileNservice/servicename.log
toConsoleLog to console (stdout)?Ntrue
noFileDon't write log to diskNfalse
redactFields to redact (e.g. passwords, credit card numbers, etc.)N[]
elasticsearchConnection object for ElasticSearchNnone
rotateHow often to rotate ES index [daily|monthly|yearly]NNo rotation by default

Testing

To make sure logs are getting shipped to Elasticsearch, you can spin up docker containers with ES and Kibana using the docker-compose.yml file in this repository.

You will need docker and docker-compose installed, then in this project folder, launch docker-compose up.

You'll need to set up an Elasticsearch index in Kibana before you'll be able to view logs, which should be the value of logger.elasticsearch.index (local-dev in above examples), or pino by default.

If you don't have any index patterns set up, Kibana won't let you proceed without adding one. Otherwise, to add additional indices, go to Settings -> Indices.

License

Licensed under MIT.

Keywords

FAQs

Last updated on 03 Sep 2019

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc