Bash

[Bash] 로그 파일 관리

인공지능하마 2023. 10. 28. 14:01
반응형

로그 파일 관리는 스크립트 개발 및 디버깅에 필수적입니다. 로그 파일을 사용하여 스크립트의 동작 및 문제 해결을 추적할 수 있습니다. 다음은 로그 파일 작성 및 관리에 관한 고급 팁과 예제입니다.

1. 로그 파일 작성:

echo 명령어를 사용하여 스크립트 실행 중에 로그를 생성하고 파일에 저장할 수 있습니다.

예제: 로그 파일 작성

#!/bin/bash

log_file="script_log.txt"

# 현재 날짜 및 시간을 로그에 기록
echo "$(date): Script started." >> "$log_file"

# 다른 로그 메시지 기록
echo "Some log message." >> "$log_file"

# 스크립트 종료 시 날짜 및 시간 기록
echo "$(date): Script completed." >> "$log_file"




2. 로그 파일 회전:

로그 파일을 지속적으로 작성하면 파일이 커져서 관리가 어려워집니다. 따라서 로그 파일을 일정 기간 또는 크기에 따라 회전시키는 것이 좋습니다.

예제: 로그 파일 회전

#!/bin/bash

log_file="script_log.txt"
max_log_size=1000000  # 최대 로그 파일 크기 (바이트)

# 로그 파일 크기 확인
log_file_size=$(stat -c%s "$log_file")

# 로그 파일 크기가 최대 크기를 초과하면 로그 파일을 백업하고 새로운 파일로 시작
if [ "$log_file_size" -gt "$max_log_size" ]; then
    mv "$log_file" "${log_file}_backup_$(date +%Y%m%d%H%M%S).txt"
fi

# 로그 작성
echo "$(date): Log message." >> "$log_file"




3. 로그 파일 롤링:

로그 파일을 지정된 수의 파일로 롤링하고 오래된 로그를 삭제하여 디스크 공간을 절약할 수 있습니다.

예제: 로그 파일 롤링

#!/bin/bash

log_dir="/var/log/myapp"
max_log_files=5

# 로그 디렉토리로 이동
cd "$log_dir"

# 로그 파일 수 확인
log_files_count=$(ls -1 | grep -E '^script_log_[0-9]{8}.txt$' | wc -l)

# 최대 파일 수보다 많은 로그 파일이 있으면 오래된 파일 삭제
if [ "$log_files_count" -ge "$max_log_files" ]; then
    oldest_log=$(ls -1 | grep -E '^script_log_[0-9]{8}.txt$' | sort | head -n 1)
    rm "$oldest_log"
fi

# 새로운 로그 파일 생성
log_file="script_log_$(date +%Y%m%d).txt"

# 로그 작성
echo "$(date): Log message." >> "$log_file"




반응형