npm-logger-winston
v1.0.8
Published
Winston logger with structured output, mounted-volume support, and compressed log rotation.
Readme
winston-logger
winston-logger is a powerful logging solution built on Winston, featuring winston-daily-rotate-file for automatic log rotation. Designed for microservices, it provides log level control, daily log rotation, and timestamped logs, ensuring efficient and scalable log management.
🚀 Features
- Log Level Control: Supports multiple log levels (error, warn, info, debug, etc.)
- Daily Log Rotation: Keeps logs organized and prevents excessive file growth.
- Structured Logging: Supports JSON-based structured logs for better debugging.
- Execution Time Measurement: Tracks execution times with
time_trace.
📥 Installation
To install winston-logger from GitHub, run:
npm install npm-logger-winston📌 Usage
1️⃣ Import and Initialize the Logger
const getLogger = require('npm-logger-winston');
const logger = getLogger(callingModule, dirPath, env); // 'logs' is the directory where log files will be storedMounted storage and timed archives (v1.0.8)
Pass an options object as the fourth argument to write logs directly to a
mounted volume. Set archiveAfter to rotate and gzip completed log files after
the selected interval.
const getLogger = require('npm-logger-winston');
const logger = getLogger(module, './logs', 'info', {
mountPath: '/mnt/application-logs',
archiveAfter: '6h',
maxFiles: '30d',
maxSize: '50m'
});mountPath overrides the second argument when provided. The directory is
created automatically. archiveAfter accepts minute, hour, or day durations
such as 30m, 6h, or 1d; true enables daily archives. Archived files use
the .gz extension. maxFiles controls retention and defaults to 14d.
The original three-argument API remains supported:
const logger = getLogger(module, '/mnt/application-logs', 'info');2️⃣ Log Messages with Different Levels
logger.info('Application started successfully');
logger.warn('Low disk space warning');
logger.error('Database connection failed');
logger.debug('Debugging information');Structured Logging Example
logger.info({ message: 'User logged in', userId: 123 });
logger.error({ message: 'Payment failed', orderId: 456, reason: 'Insufficient funds' });3️⃣ Measure Execution Time (time_trace)
const timer = logger.startTimer();
setTimeout(() => {
timer.done({ message: 'Database query executed', level: 'time_trace' });
}, 2000);trace_time Function
The trace_time function helps measure execution time for a given function.
Usage:
const logger = require('npm-logger-winston');
logger.trace_time("Processing data", () => {
for (let i = 0; i < 1e6; i++); // Simulated heavy computation
});🔧 Configuration
| Log Level | Description |
|------------|----------------------------------------------------|
| error | Critical errors that need immediate attention |
| warn | Warnings about potential issues |
| info | General information messages |
| http | HTTP request logs |
| verbose | More detailed information logs |
| debug | Debugging messages |
| time_trace | Logs execution time of operations |
🌍 ENV Configuration
| Environment | Log Level Scope |
|-------------|--------------------------------------------------|
| error | Logs up to error level |
| warn | Logs up to warn level |
| info | Logs up to info level |
| time_trace| Logs up to time_trace level |
| silly | Logs up to silly level |
📜 License
This project is licensed under the MIT License.
Happy Logging! 🚀
