Bash 쉘에서 에러 메시지를 출력하고 로깅하기 위해 여러 방법을 사용할 수 있습니다. 주로 echo
를 사용하여 에러 메시지를 표시하고, 리디렉션을 통해 로그 파일에 기록합니다.
-
에러 메시지 출력:
echo
: 표준 에러(stderr
)에 메시지를 출력합니다.>&2
: 리디렉션을 사용하여 표준 출력(stdout
)을 표준 에러로 리다이렉트합니다.
-
로깅:
>>
: 로그 파일에 메시지를 추가합니다.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"