Helenr
这就是您如何使用多日志文件管理用于调试和生产环境的日志:首先,创建一个用于管理多个记录器的类型,您可以为此创建一个单独的文件,例如logging.gotype LOGGER struct { debug *log.Logger prod *log.Logger . . . }要在项目中的任何位置获取指针,最好的方法是通过单例模式LOGGER获取它,例如 var lock = &sync.Mutex{} var loggers *LOGGER func GetLoggerInstance() *LOGGER { lock.Lock() defer lock.Unlock() if loggers == nil { fmt.Println("Creating LOGGER instance now.") loggers = &LOGGER{} } else { fmt.Println("LOGGER instance already created.") } return loggers} 现在在任何 pkg 或目录级别为调试环境设置记录器更好的方法是在根级别设置它 logger := GetLoggerInstance() f, err := os.OpenFile("path/to/debug/log/file", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) if err != nil { fmt.Println("debug log file not created", err.Error()) } loggers.debug = log.New(f, "[DEBUG]", log.Ldate|log.Ltime|log.Lmicroseconds|log.LUTC) loggers.debug.Println("This is debug log message")使用相同的方法,您还可以创建 prod 或任意数量。 logger := GetLoggerInstance() f, err = os.OpenFile("path/to/prod/log/file", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) if err != nil { fmt.Println("prod log file not created", err.Error()) } loggers.prod = log.New(f, "[PROD]", log.Ldate|log.Ltime|log.Lmicroseconds|log.LUTC) loggers.prod.Println("This is prod log message")