【发布时间】:2013-11-26 18:19:22
【问题描述】:
我正在尝试使用 Go 写入日志文件。
我尝试了几种方法,但都失败了。这是我尝试过的:
func TestLogging(t *testing.T) {
if !FileExists("logfile") {
CreateFile("logfile")
}
f, err := os.Open("logfile")
if err != nil {
t.Fatalf("error: %v", err)
}
// attempt #1
log.SetOutput(io.MultiWriter(os.Stderr, f))
log.Println("hello, logfile")
// attempt #2
log.SetOutput(io.Writer(f))
log.Println("hello, logfile")
// attempt #3
log.SetOutput(f)
log.Println("hello, logfile")
}
func FileExists(name string) bool {
if _, err := os.Stat(name); err != nil {
if os.IsNotExist(err) {
return false
}
}
return true
}
func CreateFile(name string) error {
fo, err := os.Create(name)
if err != nil {
return err
}
defer func() {
fo.Close()
}()
return nil
}
日志文件被创建,但没有任何东西被打印或附加到它上面。为什么?
【问题讨论】:
-
如果您在 Linux 中部署您的程序,您只需将日志写入标准输出,然后将输出通过管道传输到类似以下文件:./program 2>&1 | tee logs.txt。其他系统中肯定有其他方式。