golang log4go 사용 설명 및 로그 분실 원인

8647 단어 Go
1. 설명
이 reposcory 는 alecthomas log4go 에서 재 구성 한 것 으로 log4go 프로 그래 밍 언어 Java 와 유사 한 로그 패키지 입 니 다.Google 의 로그 프로젝트 에서 시작 하여 공식 적 으로 업데이트 유지 보 수 를 중단 하 였 습 니 다.
창고 주소:
https://github.com/jeanphorn/log4go.git
2. 특징
  • 터미널 로 로그 출력
  • 로 그 를 파일 로 출력 하고 크기 와 시간 에 따라 자 르 는 것 을 지원 합 니 다
  • 로그 가 네트워크 로 출력 됨
  • 로그 비동기 출력
  • 지원 log4j 파일 설정
  • 로그 분류
  • 서로 다른 종류의 로 그 를 다른 printer 에 출력 합 니 다.
  • 오래된 로그 방식 호 환
  • 3. 예시 사용
  • 원본 다운로드
  • go get github.com/jeanphorn/log4go
    
  • 도입 공정
  • import log "github.com/jeanphorn/log4go"
    
  • 구체 적 인 절 차 를 살 펴 보 세 요
  • https://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. 기타 로그 라 이브 러 리
  • https://github.com/hhkbp2/go-logging.git
  • https://github.com/cihub/seelog

  • 참고:
  • https://stackoverrun.com/cn/q/3852638
  • https://www.v2ex.com/amp/t/239039
  • 좋은 웹페이지 즐겨찾기