为了账号安全,请及时绑定邮箱和手机立即绑定

GoLang将STDOUT和STDERR写入log15文件

GoLang将STDOUT和STDERR写入log15文件

Go
至尊宝的传说 2021-04-10 15:22:55
我有GoLang Application,在其中使用log15将日志写入文件。我用于log15的软件包gopkg.in/inconshreveable/log15.v2遇到了一种情况,我想将STDERR和STDOUT的信息写入到我写log15日志的同一文件中。有没有可能实现相同的目标
查看完整描述

2 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

您可以os.Stdout使用管道捕获并使用以下命令将输出重定向到实际的stdout和文件io.MultiWriter


f, _ := os.OpenFile("my.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0664)

multiWriter := io.MultiWriter(os.Stdout, f)

rd, wr, err := os.Pipe()

if err != nil {

    os.Exit(1)

}


您os.Stderr当然可以使用


您将不得不找到如何获取log15文件句柄的方法,但这并不太难


使用此方法可能会遇到的问题是,无法保证goroutine在程序结束时会执行其工作(请参见sleep hack),不确定如何实现该目的。


查看完整回答
反对 回复 2021-04-19
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

用于创建日志文件以记录stderr或stdout的数据。使用创建一个文件OpenFile,然后SetOutput将其作为。



if err != nil {

    panic(err)

}


defer f.Close()


log.SetOutput(f)

每当您尝试记录一些值(例如出现以下情况时)时,都会将输出打印到日志文件中


查看完整回答
反对 回复 2021-04-19
  • 2 回答
  • 0 关注
  • 544 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信