Skip to content

API Request Logging with Context

Adding User ID in Request Handling Functions

Configure LogFactory ./factory.ts

typescript
import { 
  Level,
  LogFactory, 
  ConsoleAppender,
  PatternLayout
} from 'base-log-factory';
import { FileAppender } from 'blf-file-appender';

const logFactory = new LogFactory({
  level: Level.DEBUG,  // Set global log level
  appenders: [
    new ConsoleAppender(),
    new FileAppender('./logs/app.log', {
      layout: new PatternLayout('[%d{YYYY-MM-DD HH:mm:ss}] [%p] %c - %m %x{userId}'),
      maxSize: 1024 * 1024, // 1MB
      backups: 5
    })
  ]
});

Get Logger ./main.ts

typescript
import logFactory from './factory';

app.get('/api/data', (req, res) => {
  const userId = req.user.id;
  logger.addContext('userId', userId);
  try {
    // Business logic
    logger.debug('Starting request processing');
    res.send(data);
  } catch (err) {
    logger.error('Request processing failed', err);
  } finally {
    logger.removeContext('userId'); // Clean up context
  }
});