Heim >Backend-Entwicklung >Golang >Wie schreibe ich in Go erfolgreich Protokolle in eine Datei?
Bei dem Versuch, mit Go in eine Datei zu protokollieren, wurden mehrere Ansätze versucht, darunter:
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") }
Allerdings wurden trotz Erstellung der Protokolldatei (Logfile) keine Informationen in diese geschrieben.
Die Lösung besteht darin, stattdessen os.OpenFile zu verwenden os.Open, das mehr Kontrolle über Dateizugriffsberechtigungen bietet. Der folgende Code schreibt erfolgreich in die Protokolldatei:
f, err := os.OpenFile("testlogfile", os.O_RDWR | os.O_CREATE | os.O_APPEND, 0666) if err != nil { log.Fatalf("error opening file: %v", err) } defer f.Close() log.SetOutput(f) log.Println("This is a test log entry")
Dieser Ansatz verwendet os.OpenFile mit den folgenden Flags:
Mit os.OpenFile können Sie die erforderlichen Dateizugriffsberechtigungen angeben, um sicherzustellen, dass Protokolle erfolgreich geschrieben werden die Datei.
Das obige ist der detaillierte Inhalt vonWie schreibe ich in Go erfolgreich Protokolle in eine Datei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!