All files / src/utils log.js

100% Statements 9/9
100% Branches 0/0
85.71% Functions 6/7
100% Lines 9/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32                        18x     96x 96x               18x 1x 79x 2x 13x 1x    
/**
 * Structured logging helpers for route handlers and cron jobs.
 *
 * Usage:
 *   const log = require('../utils/log');
 *   log.info('economy', 'Daily reward claimed', { userId, amount });
 *   log.error('rooms', 'Failed to close room', { roomId, error: err.message });
 *   log.warn('auth', 'Invalid token', { ip });
 *
 * All calls are fire-and-forget (never throw, never block the response).
 */
 
const logger = require('./loggerInstance');
 
function logEntry(level, source, message, context) {
  try {
    Promise.resolve(logger.log({ level, source, message, context })).catch(
      () => {}, // Swallow async errors — never throw from logging
    );
  } catch {
    // Intentionally swallowed — logging must never throw to avoid masking the caller's real error
  }
}
 
module.exports = {
  debug: (source, message, context) => logEntry('DEBUG', source, message, context),
  info: (source, message, context) => logEntry('INFO', source, message, context),
  warn: (source, message, context) => logEntry('WARN', source, message, context),
  error: (source, message, context) => logEntry('ERROR', source, message, context),
  fatal: (source, message, context) => logEntry('FATAL', source, message, context),
};