Shell(쉘)/Shell(쉘)
[Shell(쉘)] 로그 출력하기 (쉘 로그)
2025. 12. 9. 10:11반응형
우분투 bash에서 구조화된 로그를 출력하는 함수를 만들어 봅시다. 다음과 같이 구성할 수 있습니다:
#!/bin/bash
# 로그 함수 정의
log() {
local level=$1
shift
local message="$@"
local timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
#한국 시간으로 출력하고 싶다면, 아래를 쓴다. (위는 UTC이다)
#local timestamp=$(TZ='Asia/Seoul' date + "%Y-%m-%dT%H:%M:%SZ")
local app_name="PKTRT_TEST"
echo "${timestamp} | ${level} | ${app_name} | ${message}"
}
# 각 레벨별 편의 함수
log_debug() {
log "DEBUG " "$@"
}
log_info() {
log "INFO " "$@"
}
log_warn() {
log "WARN " "$@"
}
log_error() {
log "ERROR " "$@"
}
(주의!! log 함수를 쉘 스크립트 맨 앞에 정의해야 사용 가능합니다. 뒤에다 정의하면 명령어를 찾을 수 없다고 뜹니다.)
■ 사용 예시
log_info "hello world"
log_debug "디버그 메시지"
log_warn "경고 메시지"
log_error "에러 발생"
■ 주요 포인트
- 타임스탬프: date -u +"%Y-%m-%dT%H:%M:%SZ" 명령으로 UTC 기준 ISO 8601 형식 생성
(만약, 한국시간으로 출력하고 싶다면 -u를 제거해주거나 혹은
local timestamp=$(TZ='Asia/Seoul' date + "..)
위와 같이 TimeZone을 붙여준다.
- 레벨 정렬: 공백을 추가해 레벨명 길이를 맞춰 출력 정렬
- 재사용성: 스크립트 상단에 함수를 정의하고 필요할 때마다 호출
더 발전시키려면 아래처럼 색상을 넣을 수 있습니다.
■ 색상 추가 (터미널에서만)
log_info() {
echo -e "\033[0;32m$(date -u +"%Y-%m-%dT%H:%M:%SZ") | INFO | PKTRT_TEST |\033[0m $@"
}
log_error() {
echo -e "\033[0;31m$(date -u +"%Y-%m-%dT%H:%M:%SZ") | ERROR | PKTRT_TEST |\033[0m $@" >&2
}
이렇게 하면 일관된 형식으로 로그를 관리할 수 있고, 나중에 grep이나 로그 분석 도구로 쉽게 파싱할 수 있습니다.
반응형
'Shell(쉘) > Shell(쉘)' 카테고리의 다른 글
| [Shell(쉘)] 파일 디스크립터와 리다이렉션 (0) | 2025.12.10 |
|---|---|
| [Shell(쉘)] 공부 QnA (1) | 2025.06.16 |
| [Shell(쉘)] screen 명령어 예제 / 상황별 쓰임 (0) | 2023.02.22 |
| [Shell(쉘)] cut 명령어 예제 (0) | 2023.02.22 |
| [Shell(쉘)] Shell script 명령어 기본 문법 (쉘 스크립트) (MAIN) (0) | 2022.09.14 |
