A simple, customizable logger for Node.js applications built on top of Winston. This library offers a clean interface for logging to console and files with support for text or JSON formats and configurable log levels.
Install the package via npm:
npm install @getankushtyagi/simple-logger
Or using yarn:
yarn add @getankushtyagi/simple-logger
- 📝 Multiple output formats (text, JSON)
- 🔍 Configurable log levels
- 💾 Console and file logging
- ⚙️ Customizable Winston transports
- 🚀 TypeScript support
import { SimpleLogger } from '@getankushtyagi/simple-logger';
const logger = new SimpleLogger({
level: 'debug',
format: 'text',
filePath: 'app.log',
});
logger.info('This is an info message');
logger.error('This is an error message');
logger.debug('This is a debug message');
logger.warn('This is a warning message');
Output in app.log
:
2025-05-12 13:34:11 [INFO]: This is an info message
2025-05-12 13:34:11 [ERROR]: This is an error message
2025-05-12 13:34:11 [DEBUG]: This is a debug message
2025-05-12 13:34:11 [WARN]: This is a warning message
import { SimpleLogger } from '@getankushtyagi/simple-logger';
const logger = new SimpleLogger({
level: 'error',
format: 'json',
filePath: 'error.json.log',
});
logger.info('This info should not appear');
logger.debug('This debug should not appear');
logger.error('This error should appear');
Output in error.json.log
:
{"timestamp":"2025-05-12 13:34:11","level":"error","message":"This error should appear"}
import { SimpleLogger } from '@getankushtyagi/simple-logger';
const logger = new SimpleLogger({
level: 'info',
format: 'text',
});
logger.info('This will only log to console');
The SimpleLogger
constructor accepts an optional configuration object with the following properties:
Property | Type | Description | Default |
---|---|---|---|
level |
string |
Log level (error , warn , info , debug ) |
info (production), debug (development) |
format |
'text' | 'json' |
Output format for logs | text |
filePath |
string |
Path to the log file (optional). If omitted, logs only to console | undefined |
transports |
winston.transport[] |
Custom Winston transports (optional). Overrides default console/file | undefined |
The logger supports the following Winston log levels (in order of priority):
error
: 0warn
: 1info
: 2debug
: 3
Logs with a lower priority than the configured level
are ignored. For example, setting level: 'error'
only logs error
messages.
import { SimpleLogger } from '@getankushtyagi/simple-logger';
import winston from 'winston';
const customTransport = new winston.transports.Http({
host: 'logging-service.example.com',
path: '/logs',
ssl: true
});
const logger = new SimpleLogger({
transports: [customTransport]
});
logger.info('This message will be sent to the HTTP endpoint');
The package includes Jest tests to verify logging functionality. To run tests:
npm test
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Ankush Tyagi
Made with ❤️ for the Node.js community