JSPM

@codephil/logging-middleware

1.0.3
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 14
  • Score
    100M100P100Q39178F
  • License MIT

Express middleware for advanced logging capabilities

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@codephil/logging-middleware) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    Express Logging Middleware

    A TypeScript-first logging middleware for Express applications with:

    • HTTP request/response logging
    • Performance monitoring
    • Structured logging
    • Colorized console output

    Features

    • Request ID tracking across logs
    • Automatic slow request detection
    • Sensitive header redaction (e.g., Authorization)
    • Structured logging with metadata
    • Prometheus metrics for request duration and counts
    • Loki integration for centralized logging
    • Secure metrics endpoints with auth options
    • Colorized console output for local development

    Security

    • Metrics endpoints disabled by default
    • Basic auth enabled by default when metrics enabled
    • Optional API key authentication
    • Automatic redaction of sensitive headers

    Installation

    npm install @codephil/logging-middleware

    Basic Usage

    import express from 'express';
    import { createLogger, httpLogger, performanceLogger } from '@your-org/logging-middleware';
    const app = express();
    const logger = createLogger('my-service');
    // Add middleware
    app.use(httpLogger(logger));
    app.use(performanceLogger(logger));
    app.get('/api/hello', (req, res) => {
    logger.info('Processing request');
    res.json({ message: 'Hello' });
    });

    Monitoring Features

    Prometheus Metrics

    The service automatically collects:

    • HTTP request duration histograms
    • Total request counts by endpoint
    • Response status codes
    import { MonitoringService } from '@your-org/logging-middleware';
    const monitoring = new MonitoringService({
    enablePrometheus: true,
    metricsPath: '/metrics',
    // Optional security
    basicAuth: true,
    metricsAuth: {
    username: process.env.METRICS_USER,
    password: process.env.METRICS_PASSWORD
    }
    });
    // Add metrics endpoint
    app.get('/metrics', monitoring.getMetricsMiddleware());

    Loki Log Aggregation

    Send logs to Grafana Loki for centralized logging:

    • Service name as label
    • Request path as label
    • Response status code as label
    const monitoring = new MonitoringService({
    enableLoki: true,
    lokiHost: 'http://my-loki:3100'
    });
    // Create logger with Loki enabled
    const logger = createLogger('my-service', 'API', true);

    Full Monitoring Example

    import { createLogger, httpLogger, performanceLogger, MonitoringService } from '@your-org/logging-middleware';
    // Setup monitoring
    const monitoring = new MonitoringService({
    enablePrometheus: true,
    enableLoki: true,
    lokiHost: process.env.LOKI_HOST || 'http://localhost:3100'
    });
    // Create logger
    const logger = createLogger('my-service', 'API', true);
    // Add middleware
    app.use(httpLogger(logger));
    app.use(performanceLogger(logger, {
    slowRequestThreshold: 500, // Log requests slower than 500ms
    enableMetrics: true
    }));
    // Expose metrics endpoint
    app.get('/metrics', monitoring.getMetricsMiddleware());
    

    Configuration Options

    MonitoringConfig

    interface MonitoringConfig {
    enablePrometheus?: boolean; // Enable Prometheus metrics
    enableLoki?: boolean; // Enable Loki log shipping
    lokiHost?: string; // Loki server URL
    metricsPath?: string; // Path for metrics endpoint
    metricsAuth?: { // Basic auth for metrics
    username: string;
    password: string;
    };
    basicAuth?: boolean; // Enable basic auth
    apiKey?: string; // Alternative API key auth
    }

    Performance Logger Options

    interface PerformanceLoggerOptions {
    slowRequestThreshold?: number; // ms threshold for slow requests
    enableMetrics?: boolean; // Enable Prometheus metrics
    }

    Features

    • Request ID tracking across logs
    • Automatic slow request detection
    • Sensitive header redaction (e.g., Authorization)
    • Structured logging with metadata
    • Prometheus metrics for request duration and counts
    • Loki integration for centralized logging
    • Secure metrics endpoints with auth options
    • Colorized console output for local development

    Security

    • Metrics endpoints disabled by default
    • Basic auth enabled by default when metrics enabled
    • Optional API key authentication
    • Automatic redaction of sensitive headers