Go語言學習筆記8: log的使用,輸出到日誌檔案和輸出到mongodb
阿新 • • 發佈:2019-01-11
參考了國外友人的方案: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.日誌輸出到mongo
需要例項化一個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 := <例項化你的mongodb連線> mw := &MongoWriter{session} log.SetOutput(mw) log.SetPrefix("[Error]") log.SetFlags(log.Llongfile | log.Ldate | log.Ltime) log.Println("Hi mongo") }