Go语言学习笔记8: log的使用,输出到日志文件和输出到mongodb

参考了国外友人的方案: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")
}



猜你喜欢

转载自blog.csdn.net/u012560213/article/details/81013190