如何在golang中将消息记录到控制台和文件?

Ser*_*tin 16 go

我可以将所有消息定向到log.txt文件:

logFile, err := os.OpenFile("log.txt", os.O_CREATE | os.O_APPEND | os.O_RDWR, 0666)
if err != nil {
    panic(err)
}
log.SetOutput(logFile)
Run Code Online (Sandbox Code Playgroud)

但是如何在控制台中获取日志消息呢?

Jim*_*imB 50

用一个 io.MultiWriter

MultiWriter创建一个写入器,复制其对所有提供的写入器的写入,类似于Unix tee(1)命令

mw := io.MultiWriter(os.Stdout, logFile)
log.SetOutput(mw)
Run Code Online (Sandbox Code Playgroud)

  • 在程序退出之前不要忘记“logFile.Close()”。 (4认同)