구조화된 로그를 사용하는 이유
기계가 읽을 수 있는 로깅
구조화된 로그를 사용하는 이유은(는) CoddyKit의 무료 Go Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Go Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
기계가 읽을 수 있는 로그
기존 로그는 자유 형식의 문자열입니다. 예를 들면 "user 42 logged in from 1.2.3.4"와 같습니다. 사람이 읽기에는 쉽지만 기계가 조회하기에는 불편합니다. 구조화된 로깅은 키-값 쌍을 내보내므로 로그 집계기가 안정적으로 필터링하고 집계할 수 있습니다.
문자열 로그의 문제
자유 형식의 텍스트를 구문 분석하는 방식은 쉽게 깨집니다:
- 시간이 지나면서 형식이 달라집니다
- 정규 표현식이 예외적인 경우에 동작하지 않습니다
- "userID=42인 모든 이벤트"처럼 조회하기가 쉽지 않습니다
구조화된 로그에서는 모든 필드가 독립적이며 조회할 수 있는 특성이 됩니다.
slog는 표준 라이브러리에 포함됩니다
Go 1.21부터 구조화된 로깅은 표준 라이브러리 패키지 log/slog에 포함되어 있습니다. 외부 의존성이 필요하지 않습니다.
import "log/slog"첫 번째 구조화된 로그
가장 간단한 호출은 메시지와 키-값 특성을 함께 기록합니다:
package main
import "log/slog"
func main() {
slog.Info("user logged in", "userID", 42, "ip", "1.2.3.4")
}출력 읽기
기본 처리기는 다음과 비슷한 내용을 출력합니다:
2009/11/10 23:00:00 INFO user logged in userID=42 ip=1.2.3.4
각 특성은 기계가 구문 분석할 수 있는 별도의 key=value 쌍입니다.
내장된 수준
slog에는 네 가지 수준이 기본으로 제공됩니다: Debug, Info, Warn, Error. 각 수준에는 메시지와 키-값 특성을 번갈아 전달합니다.
slog.Warn("disk almost full", "freePct", 5)
slog.Error("db connection failed", "attempt", 3)키-값 쌍
특성은 키, 값, 키, 값처럼 번갈아 나오는 인수로 전달합니다. 짝이 맞지 않는 홀수 번째 인수가 남으면 특수한 !BADKEY 표시와 함께 기록되므로, 항상 쌍을 맞추십시오.
slog.Info("order placed", "orderID", 1001, "total", 49.99)운영 환경을 위한 JSON
운영 환경에서는 보통 JSON을 내보내 로그 수집기(Loki, ELK, CloudWatch)가 필드를 자동으로 색인하도록 합니다. slog에는 바로 이 용도를 위한 JSON 처리기가 있으며, 다음 수업에서 다룹니다.
기존 log 패키지와 비교
기존 log 패키지는 문자열만 출력합니다. slog는 익숙한 사용 방식을 유지하면서 구조, 수준, 교체 가능한 처리기를 추가하므로 전체 코드베이스를 한 번에 바꾸지 않아도 됩니다.
구조화의 효과가 큰 경우
구조화된 로깅은 다음과 같은 경우에 특히 효과적입니다:
- 여러 서비스의 로그를 중앙에서 관리할 때
- 필드를 기준으로 대시보드와 경고를 만들 때
- ID로 요청을 서로 연결해야 할 때
실행 예제: 구조화된 출력
이 예제를 실행하여 기본 출력에서 구조화된 특성을 확인해 보십시오.
package main
import "log/slog"
func main() {
slog.Info("request handled",
"method", "GET",
"path", "/health",
"status", 200,
"ms", 12,
)
}빠른 확인
구조화된 로깅을 제대로 이해했는지 확인해 보십시오.
복습
구조화된 로그가 중요한 이유를 배웠습니다:
- 키-값 특성은 기계가 조회할 수 있습니다
log/slog는 표준 라이브러리에 포함되어 있습니다(Go 1.21 이상)- 내장된 수준: Debug, Info, Warn, Error
- 특성은 키와 값을 번갈아 나오는 쌍으로 전달합니다
다음: 텍스트 처리기와 JSON 처리기 중 선택하기
자주 묻는 질문
“구조화된 로그를 사용하는 이유” 강의는 무료인가요?
네 — “구조화된 로그를 사용하는 이유” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Go Academy 강의 전체를 잠금 해제할 수 있습니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“구조화된 로그를 사용하는 이유”에서 뭘 배우나요?
기계가 읽을 수 있는 로깅 브라우저에서 직접 실행하는 실습 코드로 Go Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Go Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Go Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“구조화된 로그를 사용하는 이유” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Go Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Go Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 구조화된 로그를 사용하는 이유
- slog 핸들러
- 로그 수준과 속성
- 사용자 지정 핸들러