// ============================================================ // LOGGING MIDDLEWARE — Logs all API calls // ============================================================ var logger = require('../utils/logger'); function loggingMiddleware(req, res, next) { var startTime = Date.now(); // Capture original json method var originalJson = res.json.bind(res); res.json = function(data) { var duration = Date.now() - startTime; // Log API calls (skip static, health, models) if (req.path.startsWith('/api/') && req.path !== '/api/health' && req.path !== '/api/models' && req.method !== 'GET') { var userId = req.user ? req.user.id : null; var responseStr = ''; try { responseStr = JSON.stringify(data); } catch(e) { responseStr = ''; } logger.apiCall(userId, req.path, { method: req.method, statusCode: res.statusCode, requestSize: parseInt(req.headers['content-length'] || 0), responseSize: responseStr.length, model: (data && data.model) || (req.body && req.body.model) || null, tokensInput: (data && data.usage && data.usage.prompt_tokens) ? data.usage.prompt_tokens : 0, tokensOutput: (data && data.usage && data.usage.completion_tokens) ? data.usage.completion_tokens : 0, duration: duration, ip: req.ip || (req.connection && req.connection.remoteAddress) || null, error: (data && data.error) || null }); } return originalJson(data); }; next(); } module.exports = loggingMiddleware;