【背景】
折腾:
期间,关于输出log信息到文件,之前已经实现了:
现在希望继续实现,同时输出信息到文件和控制台(console)。
【折腾过程】
1.去官网文档:
http://golang.org/pkg/log/#SetOutput
中看了看,貌似没看到如何实现的。
2.参考:
Could log.setoutput output to both console and log file?
去看看:
http://golang.org/pkg/io/#MultiWriter
然后大概看懂了:
log的SetOutput可以设置输出信息的io.Writer
而此处,通过新建一个MultiWriter,可以将信息写入到多个writer中,
然后将此writer设置给log的SetOutput中,就可以了。
所以就去:
【记录】go语言中通过io的MultiWriter实现同时输出log信息到log文件和console
3.虽然,此处已经实现了:
通过io的MultiWriter,将log文件和os.Stdout,两个Writer,合并成单个的Writer,
然后在log.New的时候,传入进入,从而实现:
同时将log信息,输出到log文件和console中。
但是现在有个很明显的缺点:
当想要实现不同log输出去设置不同的log的level的话,就不支持了。
即:
至少想网页的html等内容,只在log文件中输出,而不要也在console中输出
所以要去实现类似的,可以配置log的level,
比如log文件是,全部的level,都显示和保存log信息,包括debug,info等等级别的;
而console,只显示info类的信息,不显示debug信息;
由此,就可以把网页html输出为log的debug,实现:
网页html只输出到log文件,而不在console中显示了。
所以,此处:
io的MultiWriter,不支持不同的输出目标,设置不同的log的level。
所以,还是要去找别的更好的方案:
【记录】go语言中通过log4go实现同时输出log信息到log文件和console
【总结】
至此,最终选用log4go,实现了我要的效果。
详见:
【记录】go语言中通过log4go实现同时输出log信息到log文件和console
转载请注明:在路上 » 【已解决】go语言中实现log信息同时输出到文件和控制台(命令行)