@rasla/express-logify
Version:
A beautiful, fast, and type-safe logging middleware for Express.js applications
179 lines (126 loc) • 4.04 kB
Markdown
//img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
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.
- 🎨 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
```bash
npm install @rasla/express-logify
yarn add @rasla/express-logify
pnpm add @rasla/express-logify
```
```typescript
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:
```
[ ] INFO [GET ] / - 200 1ms
```
```typescript
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);
```
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` |
```typescript
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);
```
```typescript
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);
```
```typescript
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
```
Contributions are welcome! Please feel free to submit a Pull Request.
MIT License - Created by [0xRasla](https://github.com/0xRasla)
[![License: MIT](https: