[go] log 패키지를 활용한 로깅 레벨 필터링

log 패키지는 Go 언어에서 로깅을 위한 기본적인 기능을 제공합니다. 이 패키지를 사용하면 로그를 출력하고 관리하는 것이 간단해집니다. 하지만 때로는 특정 레벨의 로그만을 출력하고 싶을 때가 있습니다. 이때 로깅 레벨을 필터링하여 출력할 수 있습니다. 이번 글에서는 log 패키지를 사용하여 로깅 레벨을 필터링하는 방법에 대해 알아보겠습니다.

로깅 레벨

로그 레벨은 로그의 중요도를 나타내는데 사용됩니다. 보통 다음과 같은 다섯 가지 레벨이 사용됩니다.

log 패키지는 이러한 다섯 가지의 레벨을 모두 지원합니다.

로깅 레벨 필터링

특정 레벨 이상의 로그만을 출력하기 위해서는 log.SetOutput 함수를 사용하여 출력 대상을 변경하면 됩니다. 아래 예제를 통해 로깅 레벨을 필터링하는 방법을 알아보겠습니다.

package main

import (
	"log"
	"os"
)

func main() {
	// 로그 레벨을 변경하여 특정 레벨 이상의 로그만 출력하도록 설정
	log.SetOutput(os.Stdout)
	log.SetFlags(log.LstdFlags)
	log.SetPrefix("INFO: ")

	log.Println("This is an informational message")
	log.Println("This is a debugging message")  // 이 메시지는 출력되지 않음
	log.Println("This is a warning message")    // 이 메시지는 출력되지 않음
	log.Println("This is an error message")     // 이 메시지는 출력되지 않음
	log.Fatalln("This is a fatal error message") // 이 메시지는 출력되지 않음
}

위의 예제에서는 log.SetOutput(os.Stdout)를 통해 표준 출력으로 로그를 출력하도록 설정했습니다. 그리고 log.SetFlags 함수를 사용하여 로그 메시지에 날짜와 시간을 함께 출력하도록 설정하였습니다. 마지막으로 log.SetPrefix를 사용하여 로그 메시지에 접두사를 추가하였습니다.

로그 레벨에 따라 출력이 제어되는 것을 확인할 수 있습니다.

결론

log 패키지를 사용하여 로그를 필터링하는 것은 로그의 중요도에 맞게 출력을 제어할 수 있는 강력한 기능입니다. 특히 대규모의 애플리케이션에서는 특정 레벨의 로그만을 출력하여 디버깅 및 모니터링을 수월하게 할 수 있습니다. 이러한 기능을 활용하여 로그를 효과적으로 관리하는 것이 중요합니다.

이상으로 log 패키지를 사용하여 로깅 레벨을 필터링하는 방법에 대해 알아보았습니다.

참고문헌:

관련 내용: Go 언어 로깅을 위한 패키지 선택