Go/Golang将日志写入文件
发布时间:2020-12-16 09:41:56 所属栏目:大数据 来源:网络整理
导读:我试图写一个日志文件与Golang。 我试过几种方法,所有的都失败了。这是我试过的: func TestLogging(t *testing.T) { if !FileExists("logfile") { CreateFile("logfile") } f,err := os.Open("logfile") if err != nil { t.Fatalf("error: %v",err) } // a
我试图写一个日志文件与Golang。
我试过几种方法,所有的都失败了。这是我试过的: 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 } 日志文件被创建,但没有任何东西被打印或附加到它。为什么?
os.Open()必须在过去工作不同,但这适用于我:
f,err := os.OpenFile("testlogfile",os.O_RDWR | os.O_CREATE | os.O_APPEND,0666) if err != nil { t.Fatalf("error opening file: %v",err) } defer f.Close() log.SetOutput(f) log.Println("This is a test log entry") 基于Go文档,os.Open()不能用于log.SetOutput
编辑 移动defer f.Close()到后如果err!= nil检查 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |