로깅 미들웨어

요청 로깅 구현

모든 요청과 응답을 기록합니다.

function loggingMiddleware(req) {
  const start = Date.now();
  const url = new URL(req.url);

  console.log(`[${new Date().toISOString()}] ${req.method} ${url.pathname}`);

  return {
    onResponse: (response) => {
      const duration = Date.now() - start;
      console.log(`Response: ${response.status} (${duration}ms)`);
      return response;
    }
  };
}

const server = Bun.serve({
  port: 3000,
  fetch(req) {
    const middleware = loggingMiddleware(req);
    let response = new Response("Hello, World!");

    if (middleware.onResponse) {
      response = middleware.onResponse(response);
    }

    return response;
  }
});

로그 예시

[2024-01-06T12:00:00.000Z] GET /api/users
Response: 200 (15ms)
[2024-01-06T12:00:01.000Z] POST /api/users
Response: 201 (23ms)