我有数百个子 routine 使用log.Println()
写入日志(log)文件
我正在使用log.Println写入error.log文件.
func main() {
e, err := os.OpenFile("error.log", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
fmt.Printf("error opening file: %v", err)
os.Exit(1)
}
defer e.Close()
errLog := log.New(e, ">>>", log.Ldate|log.Ltime)
for i:=0; i<500; i++ {
go worker(errLog)
}
}
func worker(errLog log.Logger) {
// Do some work
errLog.Println("Hello world!!!")
}
我的做法正确吗?或者,我应该使用通道来确保一次只有一个进程登录到文件中,还是应该由日志(log)包本身来处理它?
日志(log)包是负责缓冲还是直接写入文件?