@satyajeetsahoo/logger
v2.1.3
Published
Small structured JSON logger for Node.js
Downloads
38
Maintainers
Readme
@satyajeetsahoo/logger
A unified contextual logging service designed for microservices and express applications.
Why use this package?
When debugging production APIs with thousands of concurrent requests, a simple console.log is useless because you don't know which request caused the log. This logger automatically injects traceId and contextual data into every log line, making tracing errors through systems like Datadog or ELK effortless.
Features
- Contextual Logging: Automatically attaches Express request metadata.
- Child Loggers: Create isolated loggers for specific modules.
- Multiple Transports: Log to the console, files, Azure, or Cloudflare R2.
Installation
npm install @satyajeetsahoo/loggerConfiguration & Express Setup
import express from 'express';
import { createLogger, requestContext, withLogContext } from '@satyajeetsahoo/logger';
const app = express();
// 1. Create the base logger
export const logger = createLogger({ service: 'employee-api', level: 'info' });
// 2. Add the context middleware to Express
app.use(requestContext());
// 3. Log anywhere!
app.get('/users/:id', (req, res) => {
logger.info('Fetching user', { userId: req.params.id });
// Output includes traceId, HTTP method, URL, and userId!
});Advanced Usage
Child Loggers
Perfect for isolating logs within specific services or classes.
const paymentLogger = logger.child({ module: 'PaymentGateway' });
paymentLogger.info('Processing transaction');
// Includes { module: 'PaymentGateway' } automaticallyAsync Context
Wrap background jobs to inject context without passing the logger down deeply nested functions.
withLogContext({ jobId: 123 }, async () => {
logger.info('Job started'); // Logs { jobId: 123 }
await processPayment(); // Any logs inside here also get { jobId: 123 }
});