我有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),不确定如何实现该目的。
料青山看我应如是
TA贡献1772条经验 获得超8个赞
用于创建日志文件以记录stderr或stdout的数据。使用创建一个文件OpenFile,然后SetOutput将其作为。
if err != nil {
panic(err)
}
defer f.Close()
log.SetOutput(f)
每当您尝试记录一些值(例如出现以下情况时)时,都会将输出打印到日志文件中
- 2 回答
- 0 关注
- 544 浏览
添加回答
举报
0/150
提交
取消