【背景】
折腾:
【已解决】go语言中实现log信息同时输出到文件和控制台(命令行)
期间,需要去搞懂:
如果新建和设置MultiWriter。
【折腾过程】
1.参考:
https://github.com/polaris1119/The-Golang-Standard-Library-by-Example/blob/master/chapter01/01.1.md
去看看:
2.然后去试试代码:
var filenameOnly string filenameOnly = GetCurFilename() fmt.Println("filenameOnly=", filenameOnly) var logFilename string = filenameOnly + ".log"; fmt.Println("logFilename=", logFilename) logFile, err := os.OpenFile(logFilename, os.O_RDWR | os.O_CREATE, 0777) if err != nil { fmt.Printf("open file error=%s\r\n", err.Error()) os.Exit(-1) } defer logFile.Close() writers := []io.Writer{ logFile, os.Stdout, } fileAndStdoutWriter := io.MultiWriter(writers...) fileAndStdoutWriter.Write([]byte("show in both log file and console via multiwriter"))
结果是:
是可以实现对应的效果的:
至此,至少基本实现了:
如何新建和使用MultiWriter了。
【总结】
新建和使用MultiWriter的示例代码如下:
var logFilename string = "multiWriterTest.log"; fmt.Println("logFilename=", logFilename) logFile, err := os.OpenFile(logFilename, os.O_RDWR | os.O_CREATE, 0777) if err != nil { fmt.Printf("open file error=%s\r\n", err.Error()) os.Exit(-1) } defer logFile.Close() writers := []io.Writer{ logFile, os.Stdout, } fileAndStdoutWriter := io.MultiWriter(writers...) fileAndStdoutWriter.Write([]byte("show in both log file and console via multiwriter\r\n"))
虽然效果不是那么爽,但是基本能用。
转载请注明:在路上 » 【已解决】go语言中如何使用io的MultiWriter