- Go 언어의 표준 라이브러리로, 로그 메시지를 기록하는 데 사용된다
- 다양한 로그 메시지 형식을 지원하며, 로그 메시지를 파일, 표준 출력, 표준 오류 출력 등으로 보낼 수 있다.
log package - log - Go Packages
Discover Packages Standard library log Version: go1.23.5 Opens a new window with list of versions in this module. Published: Jan 16, 2025 License: BSD-3-Clause Opens a new window with license information. Imports: 8 Opens a new window with list of imports.
pkg.go.dev
log.Println | log.Printf
- 로그 메시지를 출력
log.Println("This is a log message.")
log.Printf("This is a log message with a number: %d", 42)
log.Fatal | log.Fatalln | log.Fatalf
- 로그 메시지를 출력한 후, os.Exit(1)을 호출하여 프로그램 종료
log.Fatal("This is a fatal log message.")
log.Fatalf("This is a fatal log message with a number: %d", 42)
log.Panic | log.Panicln | log.Panicf
- 로그 메시지를 출력한 후, panic을 호출하여 패닉 발생
log.Panicf("This is a panic log message with a number: %d", 42)
panic
- Go 언어에서 프로그램 실행 중에 발생하는 심각한 오류를 처리하는 메커니즘
- panic이 호출되면 현재 함수의 실행이 중단되고, 해당 함수의 defer 문이 실행된 후, 호출 스택을 따라 상위 함수로 전파된다
- 최종적으로 프로그램이 종료된다
- panic은 주로 복구할 수 없는 심각한 오류가 발생했을 때 사용된다
- 예를 들어, 배열의 인덱스가 범위를 벗어났을 때, nil 포인터 참조가 발생했을 때 등이 있다
프로그램 종료 방식:
- log.Fatal: 로그 메시지를 출력한 후, os.Exit(1)을 호출하여 프로그램을 종료한다.
- log.Panic: 로그 메시지를 출력한 후, panic을 호출하여 패닉을 발생시킨다. 패닉이 호출 스택을 따라 전파되며, 최종적으로 프로그램이 종료된다
defer 함수 실행 여부:
- log.Fatal: defer 함수가 실행되지 않는다
- log.Panic: defer 함수가 실행된다
복구 가능 여부:
- log.Fatal: 프로그램이 종료되므로 복구할 수 없다.
- log.Panic: recover를 사용하여 패닉을 복구할 수 있다.
log.SetFlags
- 로그 메시지 형식 설정. 여러 플래그를 조합하여 사용할 수 있다
log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
log.SetPrefix
- 로그 메시지의 접두사 설정.
log.SetPrefix("LOG: ")
log.SetOutput
- 로그 메시지를 출력할 io.Writer 설정.
- 기본적으로 표준 오류 출력(os.Stderr)에 출력된다.
file, err := os.OpenFile("app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
log.Fatal(err)
}
log.SetOutput(file)
'IT > Go' 카테고리의 다른 글
defer (0) | 2025.01.30 |
---|---|
메서드 리시버 (0) | 2025.01.29 |
Golang Live Reloading command line utility (0) | 2025.01.23 |
Java Spring Boot 애플리케이션에서 Go REST API 호출 (0) | 2025.01.22 |
Go 변수, 데이터타입 (0) | 2024.12.26 |