@wistle/logger
v1.0.4
Published
A simple logging package for nodejs applications.
Downloads
47
Maintainers
Readme
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.