同时记录到 Go 中的控制台和文件
要将日志消息定向到文件,代码通常使用 log.SetOutput(logFile) 。但是,如果您想要控制台输出和记录到文件,这里有一个使用 io.MultiWriter 的解决方案。
什么是 io.MultiWriter?
一个 io.MultiWriter允许同时将数据写入多个目的地。它类似于 Unix tee 命令的行为。
解决方案
要登录到控制台和文件:
logFile, err := os.OpenFile("log.txt", os.O_CREATE | os.O_APPEND | os.O_RDWR, 0666) if err != nil { panic(err) }
mw := io.MultiWriter(os.Stdout, logFile)
log.SetOutput(mw)
示例
package main import ( "log" "os" "io" ) func main() { logFile, err := os.OpenFile("log.txt", os.O_CREATE | os.O_APPEND | os.O_RDWR, 0666) if err != nil { panic(err) } mw := io.MultiWriter(os.Stdout, logFile) log.SetOutput(mw) log.Println("This is a log message") }
以上是如何在 Go 中同时登录控制台和文件?的详细内容。更多信息请关注PHP中文网其他相关文章!