猿问

GoLang将STDOUT和STDERR写入log15文件

我有GoLang Application,在其中使用log15将日志写入文件。我用于log15的软件包gopkg.in/inconshreveable/log15.v2遇到了一种情况,我想将STDERR和STDOUT的信息写入到我写log15日志的同一文件中。有没有可能实现相同的目标


至尊宝的传说
浏览 545回答 2
2回答

呼啦一阵风

您可以os.Stdout使用管道捕获并使用以下命令将输出重定向到实际的stdout和文件io.MultiWriterf, _ := 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),不确定如何实现该目的。

料青山看我应如是

用于创建日志文件以记录stderr或stdout的数据。使用创建一个文件OpenFile,然后SetOutput将其作为。if err != nil {    panic(err)}defer f.Close()log.SetOutput(f)每当您尝试记录一些值(例如出现以下情况时)时,都会将输出打印到日志文件中
随时随地看视频慕课网APP

相关分类

Go
我要回答