【背景】
折腾:
【已解决】go语言中实现log信息同时输出到文件和控制台(命令行)
期间,需要去搞懂:
如果新建和设置MultiWriter。
【折腾过程】
1.参考:
https://github.com/polaris1119/The-Golang-Standard-Library-by-Example/blob/master/chapter01/01.1.md
去看看:
2.然后去试试代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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的示例代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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