/

Express.js

ByteHide Logger integrates seamlessly with Express.js applications through middleware and route-level logging.

Installation

npm install @bytehide/logger express

Basic Setup

const express = require('express');
const { Log } = require('@bytehide/logger');

const app = express();

// Configure logger
Log.configure({
    projectToken: process.env.BYTEHIDE_PROJECT_TOKEN,
    logLevel: 'info'
});

app.listen(3000, () => {
    Log.info('Express server started', {
        context: { port: 3000 }
    });
});

Request Logging Middleware

// Log all incoming requests
app.use((req, res, next) => {
    Log.info('Request received', {
        context: {
            method: req.method,
            url: req.url,
            userAgent: req.get('User-Agent'),
            ip: req.ip
        }
    });
    next();
});

Route-Level Logging

app.get('/api/users', async (req, res) => {
    Log.info('Fetching users');
    
    try {
        const users = await getUsersFromDatabase();
        
        Log.info('Users fetched successfully', {
            context: { count: users.length }
        });
        
        res.json(users);
    } catch (error) {
        Log.error('Failed to fetch users', {
            context: { endpoint: '/api/users' }
        }, error);
        
        res.status(500).json({ error: 'Internal server error' });
    }
});

Error Handling Middleware

// Global error handler
app.use((error, req, res, next) => {
    Log.error('Unhandled error', {
        context: {
            method: req.method,
            url: req.url,
            statusCode: res.statusCode
        }
    }, error);
    
    res.status(500).json({ error: 'Internal server error' });
});

User Identification

// Middleware to identify users
app.use((req, res, next) => {
    if (req.user) {
        Log.identify(req.user.id, req.user.email);
    }
    next();
});

Best Practices

Express.js Best Practices

  • Use middleware for consistent request logging
  • Log both successful operations and errors
  • Include relevant request context in logs
  • Use global error handlers for unhandled exceptions
Previous
Bun