[go] log 패키지를 이용한 정보 로깅

Go 언어에서 로깅은 프로그램 실행 중에 정보를 기록하고 디버깅하는 데 매우 중요합니다. Go 언어에서는 내장된 log 패키지를 사용하여 간단하게 로깅을 구현할 수 있습니다.

Log 패키지 소개

Go 언어의 내장된 log 패키지는 간단한 로깅을 지원합니다. 이 패키지를 사용하여 로그를 출력할 수 있으며, 날짜 및 시간 정보와 함께 로그 메시지를 기록할 수 있습니다.

package main

import (
	"log"
	"os"
)

func main() {
	logFile, err := os.Create("app.log")
	if err != nil {
		log.Fatalln("Error creating log file:", err)
	}
	defer logFile.Close()

	log.SetOutput(logFile)
	log.Println("Logging information...")
}

위의 예제에서는 log 패키지를 사용하여 “app.log” 파일에 로깅 정보를 기록하는 방법을 보여줍니다.

로그 레벨

log 패키지는 기본적으로 하나의 로그 레벨만을 제공합니다. 따라서 디버그 레벨과 같은 다양한 레벨의 로깅을 지원하지 않습니다. 하지만 사용자 정의 로그 레벨을 구현할 수 있습니다.

const (
	DebugLevel = iota
	InfoLevel
	ErrorLevel
)

type Logger struct {
	Level int
}

func (l *Logger) Debug(msg string) {
	if l.Level <= DebugLevel {
		log.Println("DEBUG:", msg)
	}
}

위의 예제는 사용자 정의 로그 레벨을 구현하는 방법을 보여줍니다.

형식화된 로그

로그 항목은 기본적으로 문자열로 기록되지만, 로그 항목의 형식을 지정하여 특정 형식으로 기록하도록 할 수 있습니다.

log.SetFlags(log.Ldate | log.Ltime | log.Lmicroseconds | log.Llongfile)

위의 예제는 로그에 날짜, 시간, 밀리초, 파일 정보 등의 여러 정보를 추가하여 형식화된 로그를 출력하는 방법을 보여줍니다.

결론

Go 언어의 log 패키지는 간단하고 효과적인 로깅을 제공합니다. 그러나 복잡한 로깅 요구 사항을 충족하기 위해서는 다른 서드 파티 라이브러리를 고려해 볼 필요가 있습니다.

Go 공식 문서

참고 자료: Effective Go