Go 언어 학습 노트 8:log의 사용, 로그 파일과 mongodb로 출력

1524 단어
외국 친구의 방안을 참고했다.https://stackoverflow.com/questions/40396499/go-create-io-writer-inteface-for-logging-to-mongodb-database
1. 파일에 로그 출력
func CreateDir(dir string) (bool, error) {
	_, err := os.Stat(dir)

	if err == nil {
		//directory exists
		return true, nil
	}

	err2 := os.MkdirAll(dir, 0755)
	if err2 != nil {
		return false, err2
	}

	return true, nil
}
func main() {
	res2, err := fileManager.CreateDir("/LOG/PATH")    // 
	if res2 == false {
		panic(err)
	}
	file, _ := os.OpenFile("/LOG/PATH/error.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)    // , 
	defer file.Close()

	log.SetOutput(file)    // 
	log.SetPrefix("[Error]")    // 
	log.SetFlags(log.Llongfile | log.Ldate | log.Ltime)    // 
        log.Println("Hi file")
}

2. 로그를 몬고로 출력
Write 메서드를 실례화해야 합니다.
type MongoWriter struct {
	session *mgo.Session
}

func (mw *MongoWriter) Write(p []byte) (n int, err error) {
	c := mw.session.DB("db_seetacloud").C("t_system_errors_log")
	err = c.Insert(bson.M{    // mongo 
		"datetime": time.Now().Format("2006-01-02 15:04:05"),
		"message": string(p),
		"channel":"Golang",
	})
	if err != nil {
		return
	}
	return len(p), nil
}

func main() {
        session := 
	mw := &MongoWriter{session}
	log.SetOutput(mw)
	log.SetPrefix("[Error]")
	log.SetFlags(log.Llongfile | log.Ldate | log.Ltime)

	log.Println("Hi mongo")
}

좋은 웹페이지 즐겨찾기