1.0.0 • Published 11 months ago
@rasla/express-logify v1.0.0
Logify for Express.js
A beautiful, fast, and type-safe logging middleware for Express.js applications. Get instant insights into your HTTP requests with colorized console output and structured file logging.
✨ Features
- 🎨 Beautiful console output with color-coded log levels
- ⚡ Zero-config with smart defaults
- 📊 Request duration and status code tracking
- 🌐 IP address logging with proxy support
- 📝 Structured logging with TypeScript support
- 🎯 Path-based request filtering
- 🔄 Automatic log directory creation
- 🎛️ Fully customizable log formats
📦 Installation
npm install @rasla/express-logify
# or
yarn add @rasla/express-logify
# or
pnpm add @rasla/express-logify🚀 Quick Start
import express from 'express';
import { logger } from '@rasla/express-logify';
const app = express();
app.use(logger());
app.get('/', (req, res) => res.send('Hello World!'));
app.listen(3000);Output:
[2024-12-03T17:48:54.721Z] INFO [GET ] / - 200 1ms🎨 Configuration
import express from 'express';
import { logger } from '@rasla/express-logify';
const app = express();
// All options are optional with smart defaults
app.use(
logger({
// Console logging (default: true)
console: true,
// File logging (default: false)
file: true,
filePath: './logs/app.log',
// Log level (default: "info")
level: 'debug', // "debug" | "info" | "warn" | "error"
// Skip certain paths
skip: ['/health', '/metrics'],
// Include IP address (default: false)
includeIp: true,
// Custom format (see Format Tokens below)
format:
'[{timestamp}] {level} [{method}] {path} - {statusCode} {duration}ms{ip}',
})
);
app.listen(3000);📝 Format Tokens
Customize your log format using these tokens:
| Token | Description | Example |
|---|---|---|
{timestamp} | ISO timestamp | 2024-12-03T17:48:54.721Z |
{level} | Log level | INFO, ERROR |
{method} | HTTP method | GET, POST |
{path} | Request path | /api/users |
{statusCode} | HTTP status | 200, 404 |
{duration} | Request time | 123ms |
{ip} | Client IP | 127.0.0.1 |
🎯 Examples
Basic API Server
import express from 'express';
import { logger } from '@rasla/express-logify';
const app = express();
app.use(logger());
app.get('/', (req, res) => res.send('Hello'));
app.post('/users', express.json(), (req, res) => res.json({ created: true }));
app.get('/users/:id', (req, res) => res.json({ id: req.params.id }));
app.listen(3000);Production Setup
import express from 'express';
import { logger } from '@rasla/express-logify';
const app = express();
// Production configuration
app.use(
logger({
// Enable file logging
file: true,
filePath: './logs/app.log',
// Include IP for security
includeIp: true,
// Skip health checks
skip: ['/health'],
// Detailed format
format:
'[{timestamp}] {level} [{method}] {path} - {statusCode} {duration}ms - {ip}',
})
);
// Routes
app
.get('/', (req, res) => res.send('API v1'))
.get('/health', (req, res) => res.send('OK'))
.get('/users', (req, res) => res.json({ users: [] }))
.post('/users', express.json(), (req, res) => res.json({ created: true }));
app.listen(3000);Error Handling
import express from 'express';
import { logger } from '@rasla/express-logify';
const app = express();
app.use(logger({ level: 'debug' }));
app.get('/error', (req, res) => {
throw new Error('Something went wrong');
});
app.listen(3000);
// Output: [2024-12-03T17:48:54.721Z] ERROR [GET ] /error - 500 1ms🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
📄 License
MIT License - Created by 0xRasla
1.0.0
11 months ago