golang 가방의 일상(2)-log 가방
일반 사용
log
패키지는 Logger
유형을 정의했고 이 유형은 포맷된 출력 방법을 제공했다.log
패키지에는 표준 logger
대상 std
이 미리 정의되어 있어 우리는 함수를 직접 호출하여 로그를 출력할 수 있다. 기본값은 표준 오류 출력(Stderr
)으로 터미널 인터페이스에 출력된다.물론 logger
대상을 사용자 정의로 만들 수도 있다. std
이 호출한 모든 함수를 내부에서 같은 이름의 logger
유형을 제어하는 방법이다.함수는 다음과 같습니다.Print()
、 Printf()
、 Println()
Fatal()
, Fatalf()
, Fatalln()
: fatal
을 트리거하고 로그 정보를 기록한 후 os.Exit(1)
을 호출하고 프로그램을 종료하며 defer Panic
, Panicf
, Panicln
: panic
예:
log.Print("Print
")
v := "Printf"
log.Printf("%s
", v)
log.Println("Println")
log.Fatalln(" fatal")
log.Panicln(" panic")
출력:
2020/08/09 13:41:18 Print
2020/08/09 13:41:18 Printf
2020/08/09 13:41:18 Println
2020/08/09 13:41:18 fatal
log
패키지에 미리 정의된 logger
객체는 기본적으로 각 로그 정보의 날짜, 시간을 인쇄합니다.예에서 Fatalln()
함수를 호출한 후 로그 정보를 출력한 다음 프로그램이 종료됩니다.logger 설정
기본 날짜와 시간에 만족하지 못하면
logger
을 설정해서 더 많은 정보를 얻을 필요가 있습니다.log
패키지에서 SetFlags()
함수로 std
의 출력 설정을 설정하고 Flags()
함수로 std
의 출력 설정을 되돌려줍니다.사용자 정의 logger
대상이라면 동명 방법도 사용할 수 있으며 호출 함수는 본질적으로 내부에서 std
으로 동명 방법을 호출한다.func Flags() int
func SetFlags(flag int)
log
패키지는 매개변수 flag
에 대해 일련의 상수를 정의합니다.const (
Ldate = 1 << iota // the date in the local time zone: 2009/01/23
Ltime // the time in the local time zone: 01:23:23
Lmicroseconds // microsecond resolution: 01:23:23.123123. assumes Ltime.
Llongfile // and line number: /a/b/c/d.go:23
Lshortfile // and line number: d.go:23. Llongfile
LUTC // if Ldate or Ltime is set, use UTC rather than the local time zone
Lmsgprefix // move the "prefix" from the beginning of the line to before the message
LstdFlags = Ldate | Ltime // initial values for the standard logger
)
LstdFlags
은 표준 logger
대상 std
구성의 초기값이며, 다음은 std
의 선언문입니다.var std = New(os.Stderr, "", LstdFlags)
예:
log.SetFlags(log.Lshortfile | log.Lmicroseconds | log.Ldate)
log.Println(" ")
출력:
2020/08/09 14:24:52.532449 main.go:17:
출력 구성을 보려면 다음과 같이 하십시오.
fmt.Println(log.Flags()) // 13
출력 13은
Llongfile
의 값이 8
Lmicroseconds
의 값이 4
1Ldate
의 값이 1
이거나 연산한 후에 13
을 얻었기 때문이다.로그 접두어 구성
출력된 로그에 지정한 접두사를 추가하면 이후의 정보 검색에 도움이 됩니다.
log
패키지에서 SetPrefix()
함수로 std
의 출력 접두사를 설정할 수 있고, Prefix()
함수로 std
의 출력 접두사를 볼 수 있다.사용자 정의 logger
대상이라면 동명 방법도 사용할 수 있으며 호출 함수는 본질적으로 내부에서 std
으로 동명 방법을 호출한다.예:
log.SetPrefix("[ ]")
log.Println(" 。")
fmt.Println(log.Prefix())
출력:
[ ]2020/08/09 14:44:05.437154 main.go:20: 。
[ ]
로그 출력 위치 구성
logger
패키지에서 log
함수로 SetOutput()
의 출력 목적지를 설정할 수 있으며 기본값은 표준 오류 출력(std
)이다.사용자 정의 Stderr
대상이라면 동명 방법도 사용할 수 있으며 호출 함수는 본질적으로 내부에서 logger
으로 동명 방법을 호출한다.예:
logFile, err := os.OpenFile("t1.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
if err != nil {
fmt.Println("open log file failed, err:", err)
return
}
log.SetOutput(logFile)
log.SetFlags(log.Lshortfile | log.Lmicroseconds | log.Ldate)
log.SetPrefix("[ ]")
log.Println(" 。")
로그를 같은 디렉터리에 있는
std
파일로 출력합니다.파일의 출력:[ ]2020/08/09 15:12:25.340135 main.go:31: 。
t1.log
을 사용하면 설정 동작을 std
함수에 쓸 수 있습니다.logger 객체 사용자 정의
init()
패키지는 log
대상의 구조 함수 logger
을 제공하는데 형식은 다음과 같다.func New(out io.Writer, prefix string, flag int) *Logger
매개 변수는 목적지, 접두사, 로그 정보를 출력하는 순서입니다.
예:
logger := log.New(os.Stderr, "" , log.Lshortfile|log.Ldate|log.Ltime)
logger.Println(" logger 。")
출력:
<New>2020/08/09 15:25:17 main.go:33: logger 。
제3자 로그 라이브러리 logrus 제3자 로그 라이브러리zap 참조
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
GoLang HTTP 서버를 도커화하고 Kubernetes에 배포이 블로그에서는 Kubernetes에서 GoLang으로 작성된 간단한 HTTP 서버를 호스팅하려고 했습니다. 도커 이미지를 빌드하고 도커 허브에 푸시합니다. Minikube에서 원하는 Pod를 생성하여 이미지를 배포...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.