Golang:使用 log.Println 登录文件是否负责并发访问

我有数百个使用 log.Println() 写入日志文件的子例程

我正在使用 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!!!")

}

我的方法正确吗?或者我应该使用 channel 来确保一次只有一个进程登录到文件,还是由日志包本身处理?


日志包也负责缓冲还是直接写入文件?


慕神8447489
浏览 232回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go