[go] log 패키지를 활용한 로깅 레벨 설정

Go 언어에서 로깅 레벨을 설정하는 것은 애플리케이션의 로그 출력을 효율적으로 관리하는 데 도움이 됩니다. Go의 표준 라이브러리에는 로깅을 위한 내장 패키지인 log이 있습니다. 이 패키지를 사용하여 로깅 레벨을 설정하는 방법을 알아보겠습니다.

로깅 레벨 설정하기

로깅 레벨을 설정하려면 다음과 같이 log 패키지의 SetOutput 함수를 사용하여 출력 대상을 설정합니다. 또한, SetFlags 함수를 사용하여 로그 메시지에 포함할 정보를 지정할 수 있습니다.

package main

import (
	"log"
	"os"
)

func main() {
	// 파일로 로그 출력
	logFile, err := os.OpenFile("app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
	if err != nil {
		log.Fatal("Failed to open log file:", err)
	}
	defer logFile.Close()
	log.SetOutput(logFile)
  
	// 로그 메시지에 날짜 및 시간 정보 추가
	log.SetFlags(log.Ldate | log.Ltime)
  
	// 로그 레벨 설정
	// (기본값: log.LstdFlags - 로그 메시지에 날짜 및 시간 정보 추가)
	// (log.LstdFlags 대신 log.Lshortfile 등 다른 옵션 사용 가능)
	// log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile) - 파일명 및 라인 번호도 출력
}

위의 예제에서는 app.log 파일에 로그를 출력하도록 log.SetOutput을 사용하여 출력 대상을 설정하였고, log.SetFlags를 사용하여 로그 메시지에 날짜 및 시간 정보를 추가하였습니다. log.SetFlags 함수에 다른 옵션을 지정하여 다양한 정보를 로그 메시지에 포함시킬 수 있습니다.

로깅 레벨을 설정하기 위해 log 패키지에는 특별한 메커니즘이 없습니다. 하지만 개발자는 필요에 따라 log 패키지를 확장하여 특정 로깅 레벨을 지원하는 로거를 작성할 수 있습니다.

로깅을 자세히 제어하려는 경우에는 보다 유연한 로깅 라이브러리를 사용하는 것이 좋을 수 있습니다. 다양한 로깅 레벨과 필터링, 로그 형식, 로그 파일 회전 등을 지원하는 외부 라이브러리인 logrus와 같은 라이브러리를 고려해 볼 수 있습니다.

로깅 레벨을 설정하는 방법은 애플리케이션의 요구 사항에 따라 달라질 수 있으므로, 해당 요구 사항에 가장 적합한 방법을 선택하는 것이 중요합니다.

참고: https://golang.org/pkg/log/