golang log4go 사용 설명 및 로그 분실 원인
8647 단어 Go
이 reposcory 는 alecthomas
log4go
에서 재 구성 한 것 으로 log4go
프로 그래 밍 언어 Java
와 유사 한 로그 패키지 입 니 다.Google 의 로그 프로젝트 에서 시작 하여 공식 적 으로 업데이트 유지 보 수 를 중단 하 였 습 니 다.창고 주소:
https://github.com/jeanphorn/log4go.git
2. 특징
log4j
파일 설정 go get github.com/jeanphorn/log4go
import log "github.com/jeanphorn/log4go"
4. 설정 파일 없 이 사용
설정 파일 을 적용 하지 않 고 코드 에
json
형식, 스크롤 백 단계, 백업 로그 갯 수 등 을 직접 설정 할 수 있 습 니 다. 코드 예제 는 다음 과 같 습 니 다.package main
import (
l4g "github.com/jeanphorn/log4go"
)
var (
Log l4g.Logger = make(l4g.Logger)
)
func InitLog(filename string) {
_, err := os.Stat("./log/")
if os.IsNotExist(err) {
os.Mkdir("./log/", 0755)
}
flw := l4g.NewFileLogWriter("./log/"+filename, false, false)
flw.SetFormat("[%D %T] [%L] (%S) %M")
flw.SetRotate(true)
flw.SetRotateSize(1 * 1024 * 1024) // 10M
flw.SetRotateMaxBackup(10) //
flw.SetRotateDaily(false) //
flw.SetSanitize(true)
Log.AddFilter("file", l4g.INFO, flw)
Log.Info("Log init done")
time.Sleep(100 * time.Microsecond)
}
func main() {
InitLog("test.log")
Log.Info("this is info")
}
그러나 실행 후 로그 파일 에 로그 인쇄 가 없습니다. 그 이 유 는:
log
임시 저장 로 그 를 사용 합 니 다. 인쇄 는 다른 log4go
로 진행 되 지만 주 channel
가 너무 빨리 종료 되 었 을 때 로 그 를 인쇄 하 는 goroutine
로 그 를 인쇄 할 기회 가 없어 서 로 그 를 잃 어 버 렸 습 니 다.5. 해결 방법
프로그램 마지막 에:
goroutine
, goroutine
호출 은 인쇄 로그 channel
의 실행 시간 을 남 겨 줍 니 다.func main() {
InitLog("test.log")
Log.Error("this is error")
time.Sleep(100 * time.Microsecond)
Log.Info("this is info")
time.Sleep(100 * time.Microsecond)
}
6. 기타 로그 라 이브 러 리
참고: