diff --git a/backend/src/index.js b/backend/src/index.js index cfef857..6047f91 100644 --- a/backend/src/index.js +++ b/backend/src/index.js @@ -12,12 +12,14 @@ const trashRoutes = require('./routes/trash'); const statsRoutes = require('./routes/stats'); const recentRoutes = require('./routes/recent'); const errorHandler = require('./middleware/errorHandler'); +const logger = require('./middleware/logger'); const app = express(); const PORT = process.env.PORT || 3000; app.use(cors()); app.use(express.json()); +app.use(logger); app.use('/api/auth', authRoutes); app.use('/api/files', fileRoutes); diff --git a/backend/src/middleware/logger.js b/backend/src/middleware/logger.js new file mode 100644 index 0000000..05b8560 --- /dev/null +++ b/backend/src/middleware/logger.js @@ -0,0 +1,28 @@ +// 请求日志中间件 +const logger = (req, res, next) => { + const start = Date.now(); + + res.on('finish', () => { + const duration = Date.now() - start; + const log = { + method: req.method, + url: req.url, + status: res.statusCode, + duration: `${duration}ms`, + ip: req.ip, + userAgent: req.get('user-agent'), + timestamp: new Date().toISOString() + }; + + // 控制台输出 + if (log.status >= 400) { + console.error('[ERROR]', JSON.stringify(log)); + } else { + console.log('[INFO]', JSON.stringify(log)); + } + }); + + next(); +}; + +module.exports = logger;