[go] log 패키지를 활용한 로깅과 동시에 예외 로깅

Go 언어를 사용하여 애플리케이션을 개발할 때 로깅은 매우 중요한 요소입니다. log 패키지를 이용하면 간편하게 로그를 남기고 예외를 추적할 수 있습니다. 이 글에서는 Go 프로젝트에서 log 패키지를 활용하여 로깅 및 예외 로깅을 구현하는 방법에 대해 알아보겠습니다.

목차

로깅

로그 레벨 설정

log 패키지는 메시지를 출력하는 데 여러 로그 레벨을 제공합니다. 로그 레벨은 Println, Printf, Print, Fatal, Panic 등이 있습니다. 주요 로그 레벨은 다음과 같습니다.

package main

import "log"

func main() {
    log.Println("This is a log message")
    log.Printf("This is a formatted log message with value: %d", 10)
    log.Print("This is a log message without formatting")
    log.Fatal("This is a fatal log message")
    log.Panic("This is a panic log message")
}

로그 파일에 기록

로그를 파일에 기록하려면 os.OpenFilelog.New를 사용하여 새로운 로거를 만들고 해당 로거에 출력할 파일을 지정해야 합니다.

package main

import (
	"log"
	"os"
)

func main() {
    file, err := os.OpenFile("app.log", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644)
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    logger := log.New(file, "prefix: ", log.LstdFlags)
    logger.Println("This is a log message")
}

예외 로깅

panic 상황에서 로깅하기

예외 상황이 발생했을 때 해당 상황을 기록하고 싶을 때는 defer 키워드와 recover 함수를 사용하여 패닉 내용을 로깅할 수 있습니다.

package main

import "log"

func main() {
    defer func() {
        if r := recover(); r != nil {
            log.Printf("Recovered from panic: %v", r)
        }
    }()
    panic("This is a panicking message")
}

결론

Go 언어의 log 패키지를 사용하면 간편하게 로그를 남기고 예외를 추적할 수 있습니다. 적절한 로그 레벨을 선택하여 로깅하고, os.OpenFilelog.New를 이용하여 로그를 파일에 기록할 수 있습니다. 또한, deferrecover를 활용하여 예외 상황에서도 로깅을 수행할 수 있습니다.

이렇게 log 패키지를 활용하여 로깅과 동시에 예외 로깅을 구현함으로써 애플리케이션의 안정성을 높일 수 있습니다.

내용 출처: Go 언어 공식 문서


이 자료는 보다 나은 설명을 위해 공식 문서 및 각종 자료를 참고하여 작성되었습니다.