[예외 처리와 오류 처리]에러 메시지 출력과 로깅 방법

Bash 쉘에서 에러 메시지를 출력하고 로깅하기 위해 여러 방법을 사용할 수 있습니다. 주로 echo를 사용하여 에러 메시지를 표시하고, 리디렉션을 통해 로그 파일에 기록합니다.

  1. 에러 메시지 출력:

    • echo: 표준 에러(stderr)에 메시지를 출력합니다.
    • >&2: 리디렉션을 사용하여 표준 출력(stdout)을 표준 에러로 리다이렉트합니다.
  2. 로깅:

    • >>: 로그 파일에 메시지를 추가합니다.
    • date: 현재 날짜와 시간을 포함하여 로그에 타임스탬프를 추가합니다.

[기본 샘플 코드]

에러 메시지 출력:

echo "An error occurred." >&2

로깅:

error_message="An error occurred."
echo "$(date): $error_message" >> error.log

[응용 코드]

다른 함수와 함께 사용하는 예시:

# 에러 메시지 출력 함수
print_error() {
  local error_message="$1"
  echo "$error_message" >&2
}

# 예외 처리 함수
handle_exception() {
  local error_message="An exception occurred."
  print_error "$error_message"
  exit 1
}

# 에러 발생 시 처리
command1 || handle_exception
command2 || handle_exception

[조건문과 반복문과 함께 사용하는 샘플 코드]

# 조건문과 함께 에러 메시지 출력
if ! command; then
  print_error "Command failed."
fi

# 반복문과 함께 로깅
for file in *.txt; do
  if [ ! -f "$file" ]; then
    error_message="File not found: $file"
    echo "$(date): $error_message" >> error.log
  fi
done

[성능 향상을 위한 팁]

  • 에러 메시지를 최소한으로 유지하여 출력량을 줄이세요.
  • 로그 파일의 크기가 커지지 않도록 주기적으로 백업하거나 로그 파일의 로테이션을 설정하세요.

[성능 향상을 위한 팁에 해당하는 샘플 코드]

# 에러 메시지 출력을 함수로 추상화하여 중복을 줄임
print_error() {
  local error_message="$1"
  echo "$error_message" >&2
}

# 로그 파일 크기 제한을 위한 로그 로테이션
log_file="error.log"
max_size=1000000  # 1MB
if [ -f "$log_file" ] && [ $(stat -c%s "$log_file") -gt $max_size ]; then
  mv "$log_file" "$log_file.old"
fi

# 로그 파일에 타임스탬프와 에러 메시지 추가
error_message="An error occurred."
echo "$(date): $error_message" >> "$log

_file"

게시됨

카테고리

,

작성자