1.0.4 • Published 9 months ago

@wistle/logger v1.0.4

Weekly downloads
-
License
MIT
Repository
-
Last release
9 months ago

Wistle Logger

Wistle Logger is a versatile logging utility for Node.js applications, designed to log messages to console, files, and Elasticsearch (ELK stack).

Installation

npm install @wistle/logger

Features

  • Log messages to console.
  • Write logs to files with customizable options
  • Send logs to Elasticsearch for centralized logging
  • Configurable log buffer and flush intervals

Usage

Basic Setup

const { WistleLogger } = require('@wistle/logger');

const logger = new WistleLogger({
    titleMessageLength: 255,        // Optional: Max length for title/message
    paramsMessageLength: 4500,      // Optional: Max length for params
    label: 'app',                   // Optional: Label for your application
    writeToConsole: true,           // Optional: Log to console
    writeToElk: true,               // Optional: Send logs to Elasticsearch
    writeToFile: true,              // Optional: Write logs to file
    elkOptions: {
        node: 'http://localhost:9200',  // Elasticsearch node URL
        index: 'logs',                  // Elasticsearch index
        auth: {
            username: 'elastic',
            password: 'password'
        }
        flushInterval: 1200,            // Optional: Interval to flush logs default is 1200 ms
        maxBufferLimit: 500            // Optional: Max logs to buffer default 500
    },
    fileOptions: {
        fileName: 'app.log',            // Optional: Log file name
        flags: 'a'                      // Optional: File write flags (append mode)
    }
});

// Example usage
// operation_id, message, ...params 
logger.info('123', 'User logged in');
logger.verbose('123', 'Logged in user details', { userId: 'user123', ipAddress: '192.168.0.1' }, { test: 'test'});

Output

2024-06-15T12:00:00.000Z | 123 | app | info | User logged in | 
2024-06-15T12:00:01.000Z | 123 | app | verbose | Logged in user details | {"userId":"user123","ipAddress":"192.168.0.1"}, { "test": "test"}

Methods

  • debug, info, error, verbose: Log messages with different severity levels.
  • safeDebug, safeInfo, safeError, safeVerbose: Safe logging methods for sanitizing sensitive data.

Flush Logs

// Flush all logs (to Elasticsearch and log file). This is useful for ELK and File Stream for graceful shutdowns.
process.on('SIGINT', () => {
  console.log('Received SIGINT signal');
  // Perform cleanup tasks before exiting
  logger.flushAll();
  process.exit(0); // 0 indicates a successful exit
});

Configuration Options

  • titleMessageLength: Max length for title/message.
  • paramsMessageLength: Max length for params.
  • label: Application label.
  • writeToConsole: Enable logging to console.
  • writeToElk: Send logs to Elasticsearch.
  • writeToFile: Write logs to file.
  • elkOptions: Elasticsearch configuration options.
  • fileOptions: File logging configuration options.
  • instanceId: For identifying you application if multiple instance of service is ran (process.env.INSTANCE_ID || process.env.HOSTNAME || config.instanceId).
  • logToConsoleOnError: Any Failures from Wistle Logger (ELK or File) will be logged with console.error if this is set to false only ELK API logs will appear rest all error will be not visible.

License

MIT License. See LICENSE file for details.

1.0.4

9 months ago

1.0.3

9 months ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago