[파이썬] shutil로의 로그 파일 관리 및 아카이빙하기

로그 파일은 소프트웨어 애플리케이션에서 발생하는 이벤트와 정보를 기록하는 데 사용됩니다. 로그 파일은 디버깅, 모니터링 및 분석을 위해 중요한 역할을 합니다. 그러나 로그 파일이 계속해서 쌓이면 디스크 공간을 차지하고 관리하기 어려워질 수 있습니다.

이 문제를 해결하기 위해 파이썬의 shutil 라이브러리를 사용하여 로그 파일의 관리와 아카이빙을 자동화할 수 있습니다. shutil은 파일 및 디렉토리 작업을 수행하는 데 사용되는 유틸리티 함수를 제공합니다.

1. 로그 파일 관리

로그 파일을 적절하게 관리하기 위해 다음과 같은 작업을 수행할 수 있습니다:

1.1. 초기화

애플리케이션 시작 시간에 따라 로그 파일을 초기화합니다. 새로운 로그 파일을 생성하고 기존 로그 파일을 삭제하거나 백업합니다.

import shutil
import os

log_file_path = "logs/app.log"

# 새로운 로그 파일 생성
with open(log_file_path, "w") as file:
    file.write("")

# 기존 로그 파일 삭제 또는 백업
if os.path.exists(log_file_path):
    shutil.move(log_file_path, f"{log_file_path}.bak")

1.2. 로그 파일 회전

로그 파일을 회전하여 파일 크기를 제한하거나 로그 이벤트의 유지 기간을 설정할 수 있습니다. 이를 위해 로그 파일을 신규로 생성하고 기존 로그 파일에 이벤트를 기록합니다. 이후에는 기존 로그 파일을 압축 또는 삭제할 수 있습니다.

import shutil

log_file_path = "logs/app.log"
max_file_size = 1_000_000  # 1MB

# 새로운 로그 파일 생성
with open(log_file_path, "w") as file:
    file.write("")

# 기존 로그 파일 압축
shutil.make_archive(log_file_path, "zip", log_file_path)

# 기존 로그 파일 삭제
os.remove(log_file_path)

2. 로그 파일 아카이빙

로그 파일 아카이빙은 오래된 로그 파일을 보관함으로써 디스크 공간을 절약합니다. 아카이빙은 로그 파일을 모아서 하나의 아카이브 파일(e.g., zip, tar)로 생성하는 과정입니다. 아래의 예제는 로그 파일을 아카이브 파일로 압축하는 방법을 보여줍니다.

import shutil

log_directory = "logs/"
archive_directory = "archives/"

# 로그 파일 아카이빙
shutil.make_archive(archive_directory + "logs", "zip", log_directory)

위의 코드는 logs 디렉토리의 모든 파일과 하위 디렉토리를 logs.zip으로 압축합니다.

결론

로그 파일은 애플리케이션에서 발생하는 이벤트와 정보를 기록하는데 중요한 역할을 합니다. shutil 라이브러리를 사용하여 로그 파일을 관리하고 아카이브하는 방법을 배웠습니다. 이를 통해 로그 파일의 크기를 제한하고 디스크 공간을 절약할 수 있습니다. 파이썬의 shutil을 이용하여 로그 파일 관리 및 아카이빙을 자동화하면 시스템의 신뢰성과 성능을 향상시킬 수 있습니다.