slog 핸들러
텍스트 및 JSON 핸들러
slog 핸들러은(는) CoddyKit의 무료 Go Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Go Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
처리기가 형식을 결정합니다
slog에서 로거는 처리기를 호출하여 각 레코드의 형식을 지정하고 기록합니다. 처리기를 교체하면 로그 호출을 수정하지 않고도 출력 형식을 바꿀 수 있습니다.
TextHandler
slog.NewTextHandler는 사람이 읽기 쉬운 key=value 형식의 줄을 기록합니다. 로컬 개발 환경과 터미널에 적합합니다.
package main
import (
"log/slog"
"os"
)
func main() {
h := slog.NewTextHandler(os.Stdout, nil)
logger := slog.New(h)
logger.Info("hello", "env", "dev")
}JSON 처리기
slog.NewJSONHandler는 한 줄마다 JSON 객체 하나를 내보냅니다. 운영 환경의 로그 수집 파이프라인에 적합합니다.
package main
import (
"log/slog"
"os"
)
func main() {
h := slog.NewJSONHandler(os.Stdout, nil)
logger := slog.New(h)
logger.Info("hello", "env", "prod")
}로거 만들기
slog.New(handler)는 처리기를 로거로 감쌉니다. 해당 인스턴스에서 logger.Info, logger.Error 등을 호출합니다.
logger := slog.New(slog.NewJSONHandler(os.Stdout, nil))HandlerOptions
처리기 생성자의 두 번째 인수는 *slog.HandlerOptions입니다. 기본값을 사용하려면 nil을 전달하고, 수준과 소스 위치를 설정하려면 값을 구성하십시오.
opts := &slog.HandlerOptions{
Level: slog.LevelDebug,
AddSource: true,
}
h := slog.NewJSONHandler(os.Stdout, opts)파일 또는 버퍼에 기록하기
처리기는 어떤 io.Writer든 받을 수 있습니다. 파일, 테스트용 버퍼 또는 표준 출력에 로그를 기록할 수 있습니다. 이러한 분리는 slog 설계의 핵심 요소입니다.
f, _ := os.Create("app.log")
logger := slog.New(slog.NewJSONHandler(f, nil))기본 로거 설정하기
slog.SetDefault(logger)를 사용하면 패키지 수준 함수(slog.Info 등)가 사용자의 처리기를 사용합니다. 시작할 때 한 번 설정하십시오.
slog.SetDefault(slog.New(slog.NewJSONHandler(os.Stdout, nil)))
slog.Info("now JSON by default")텍스트 출력과 JSON 출력
같은 호출도 두 가지 형식으로 출력됩니다:
- 텍스트:
time=... level=INFO msg=hello env=dev - JSON:
{"time":"...","level":"INFO","msg":"hello","env":"dev"}
처리기 선택하기
일반적인 기준은 다음과 같습니다:
- 로컬/개발 환경: TextHandler(읽기 쉬움)
- 운영 환경/집계 환경: JSON 처리기(구문 분석 가능)
환경 변수를 통해 선택하면 동일한 실행 파일이 환경에 맞게 동작합니다.
재사용 가능한 설정 작성하기
로거 생성을 중앙에서 관리하여 앱 전체가 하나의 구성을 공유하도록 하십시오.
func newLogger(prod bool) *slog.Logger {
if prod {
return slog.New(slog.NewJSONHandler(os.Stdout, nil))
}
return slog.New(slog.NewTextHandler(os.Stdout, nil))
}실행 예제: 처리기 전환
이 프로그램은 두 처리기를 통해 같은 이벤트를 기록하므로 형식을 비교할 수 있습니다.
package main
import (
"log/slog"
"os"
)
func main() {
text := slog.New(slog.NewTextHandler(os.Stdout, nil))
js := slog.New(slog.NewJSONHandler(os.Stdout, nil))
text.Info("login", "user", "ada")
js.Info("login", "user", "ada")
}빠른 확인
slog 처리기를 제대로 이해했는지 확인해 보십시오.
복습
slog 처리기에 대해 배웠습니다:
- 처리기는 레코드의 형식을 지정하고 기록하며, 로거가 처리기를 호출합니다
- 사람에게는
NewTextHandler, 기계에는NewJSONHandler를 사용합니다 - 처리기는 어떤
io.Writer와*HandlerOptions든 받을 수 있습니다 slog.SetDefault는 패키지 수준 함수와 처리기를 연결합니다
AI 튜터와 함께 Go을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 51
- 레슨
- 203
자주 묻는 질문
“slog 핸들러” 강의는 무료인가요?
네 — “slog 핸들러” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Go Academy 강의 전체를 잠금 해제할 수 있습니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“slog 핸들러”에서 뭘 배우나요?
텍스트 및 JSON 핸들러 브라우저에서 직접 실행하는 실습 코드로 Go Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Go Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Go Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“slog 핸들러” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Go Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Go Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.