[python] 웹 서버에 로그 분석 기능 추가하기
개요
웹 서버는 클라이언트의 요청에 대한 응답을 처리하는 중요한 역할을 합니다. 그러나 이러한 서버에서 발생하는 로그는 분석과 모니터링을 위해 중요한 정보를 제공합니다. 이번 글에서는 Python 언어를 사용하여 웹 서버에 로그 분석 기능을 추가하는 방법에 대해 알아보겠습니다.
로그 파일 생성하기
먼저, 웹 서버에서 생성되는 로그를 저장할 파일을 생성해야 합니다. 이 파일에는 각 요청에 대한 정보가 기록됩니다. 아래의 코드를 사용하여 로그 파일을 생성할 수 있습니다.
log_file = open("access.log", "a") # 로그 파일 열기(이미 존재할 경우 이어쓰기 모드)
log_file.write("요청 IP: %s\n" % request.remote_addr) # 클라이언트 IP 주소 기록
log_file.write("요청 메서드: %s\n" % request.method) # 요청 메서드 기록
log_file.write("요청 URL: %s\n" % request.url) # 요청 URL 기록
log_file.write("응답 상태 코드: %s\n" % response.status) # 응답 상태 코드 기록
log_file.write("\n")
log_file.close() # 로그 파일 닫기
로그 분석하기
웹 서버에 로그를 기록한 후, 해당 로그 파일을 분석하여 원하는 정보를 추출할 수 있습니다. 아래의 코드는 로그 파일을 읽고, 특정 기준에 따라 정보를 분석하는 예제입니다.
log_file = open("access.log", "r") # 로그 파일 열기
ip_count = {} # IP 주소별 요청 횟수를 저장할 딕셔너리
total_requests = 0 # 총 요청 횟수
for line in log_file:
if "요청 IP:" in line:
ip = line.split(":")[1].strip() # IP 주소 추출
if ip in ip_count:
ip_count[ip] += 1 # 이미 존재하는 IP 주소라면 요청 횟수 증가
else:
ip_count[ip] = 1 # 새로운 IP 주소라면 요청 횟수 초기화
total_requests += 1 # 총 요청 횟수 증가
log_file.close() # 로그 파일 닫기
# 분석 결과 출력
print(f"총 요청 횟수: {total_requests}")
print("IP 주소별 요청 횟수:")
for ip, count in ip_count.items():
print(f"{ip}: {count}")
결론
이번 글에서는 Python을 사용하여 웹 서버에 로그 분석 기능을 추가하는 방법에 대해 알아보았습니다. 로그 파일을 생성하고 분석하여 웹 서버의 동작을 모니터링하거나 필요한 정보를 추출할 수 있습니다. 이를 통해 서버의 성능 개선이나 보안 강화 등의 작업에 도움을 받을 수 있습니다.
참고 문서:
- Flask 공식 문서: Logging
- Python 공식 문서: Logging HOWTO