最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】go语言中实现log信息同时输出到文件和控制台(命令行)

GO crifan 12583浏览 0评论

【背景】

折腾:

【记录】用go语言实现模拟登陆百度

期间,关于输出log信息到文件,之前已经实现了:

【已解决】go语言中实现输出内容到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信息同时输出到文件和控制台(命令行)

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
82 queries in 0.176 seconds, using 22.09MB memory