dnsweeper
Version:
Advanced CLI tool for DNS record risk analysis and cleanup. Features CSV import for Cloudflare/Route53, automated risk assessment, and parallel DNS validation.
44 lines (36 loc) • 1.29 kB
text/typescript
/**
* Request Logging Middleware
*/
import { Request, Response, NextFunction } from 'express';
import { logger } from '../utils/logger.js';
export const requestLogger = (req: Request, res: Response, next: NextFunction) => {
const startTime = Date.now();
// リクエスト情報をログ
logger.info(`➤ ${req.method} ${req.originalUrl}`, {
ip: req.ip,
userAgent: req.get('User-Agent'),
contentLength: req.get('Content-Length'),
contentType: req.get('Content-Type')
});
// レスポンス完了時のログ
res.on('finish', () => {
const duration = Date.now() - startTime;
const { statusCode } = res;
const logLevel = statusCode >= 400 ? 'warn' : 'info';
const statusEmoji = getStatusEmoji(statusCode);
logger[logLevel](`${statusEmoji} ${req.method} ${req.originalUrl} ${statusCode} - ${duration}ms`, {
statusCode,
duration,
contentLength: res.get('Content-Length'),
ip: req.ip
});
});
next();
};
function getStatusEmoji(statusCode: number): string {
if (statusCode >= 200 && statusCode < 300) return '✅';
if (statusCode >= 300 && statusCode < 400) return '↪️';
if (statusCode >= 400 && statusCode < 500) return '⚠️';
if (statusCode >= 500) return '❌';
return '📄';
}