자바스크립트 로그 분석 및 통계 기능

로그 분석은 소프트웨어 개발 및 유지보수 과정에서 중요한 역할을 합니다. 로그를 분석하면 애플리케이션의 동작 상태, 사용자 행위, 오류 등을 파악할 수 있어 이를 통해 애플리케이션의 성능 향상과 버그 수정에 도움을 줄 수 있습니다.

자바스크립트는 웹 개발에서 가장 널리 사용되는 언어 중 하나이며, 많은 웹 애플리케이션에서 로깅 기능을 제공합니다. 이 문서에서는 자바스크립트를 사용하여 로그를 분석하고 통계를 생성하는 기능을 구현하는 방법에 대해 알아보겠습니다.

로그 수집하기

로그를 분석하려면 먼저 로그를 수집해야 합니다. 자바스크립트에서는 console 객체의 메서드를 사용하여 로그를 출력할 수 있습니다. 예를 들어, console.log() 메서드를 사용하면 값을 로그에 출력할 수 있습니다.

console.log("Hello, World!");
console.log({ name: "John", age: 30 });

로그 저장하기

로그를 분석하기 위해선 로그를 저장해야 합니다. 저장 방식은 다양할 수 있으며, 자바스크립트에서는 일반적으로 서버로 로그를 전송하여 저장합니다. 이를 위해 AJAX나 Fetch API 등을 사용할 수 있습니다.

function sendLogToServer(logData) {
  fetch("https://example.com/log", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify(logData),
  })
    .then((response) => {
      console.log("Log sent successfully!");
    })
    .catch((error) => {
      console.error("Failed to send log:", error);
    });
}

console.log = function (message) {
  sendLogToServer({ level: "info", message: message });
};

위 예제는 console.log() 메서드를 오버라이드하여 로그를 서버로 전송하는 예입니다.

로그 분석하기

로그를 수집한 후에는 이를 분석하여 유용한 정보를 추출할 수 있습니다. 여기서는 간단한 예시로 로그의 개수를 세는 기능을 구현해보겠습니다.

function countLogs(logs) {
  return logs.length;
}

fetch("https://example.com/logs")
  .then((response) => response.json())
  .then((logs) => {
    const logCount = countLogs(logs);
    console.log("Total logs:", logCount);
  })
  .catch((error) => {
    console.error("Failed to fetch logs:", error);
  });

위 예제에서는 서버에서 로그 데이터를 가져온 후, countLogs() 함수를 사용하여 로그의 개수를 세고 결과를 로그로 출력합니다.

로그 통계 생성하기

로그를 분석하면 더 복잡한 통계를 생성할 수도 있습니다. 예를 들어, 특정 이벤트가 발생한 로그의 개수를 파악하거나, 로그 레벨에 따른 분포를 분석할 수 있습니다.

function countEventLogs(logs, eventName) {
  const filteredLogs = logs.filter((log) => log.event === eventName);
  return filteredLogs.length;
}

function calculateLogLevelDistribution(logs) {
  const levels = {};
  logs.forEach((log) => {
    if (levels[log.level]) {
      levels[log.level]++;
    } else {
      levels[log.level] = 1;
    }
  });
  return levels;
}

fetch("https://example.com/logs")
  .then((response) => response.json())
  .then((logs) => {
    const eventLogCount = countEventLogs(logs, "click");
    console.log("Click event logs:", eventLogCount);

    const levelDistribution = calculateLogLevelDistribution(logs);
    console.log("Log level distribution:", levelDistribution);
  })
  .catch((error) => {
    console.error("Failed to fetch logs:", error);
  });

위 예제에서는 countEventLogs() 함수를 사용하여 “click” 이벤트가 발생한 로그의 개수를 세고, calculateLogLevelDistribution() 함수를 사용하여 로그 레벨의 분포를 계산합니다. 이러한 통계를 통해 어떤 이벤트가 자주 발생하는지나 로그의 심각성을 파악할 수 있습니다.

로그 분석 및 통계 기능을 자바스크립트에서 구현함으로써 애플리케이션의 동작을 이해하고 문제를 해결하는 데 도움이 될 수 있습니다. 이를 통해 애플리케이션의 성능을 향상시키고 사용자 경험을 개선할 수 있습니다.