Comment écrire des journaux dans un fichier dans Go
Lorsque vous tentez d'écrire dans un fichier journal à l'aide de Go, plusieurs erreurs peuvent survenir. Malgré la création d'un fichier journal, les méthodes tentées peuvent ne pas parvenir à y imprimer ou à y ajouter des journaux. Le code fourni illustre ces tentatives :
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") }
Pour résoudre ce problème, le code doit utiliser os.OpenFile au lieu de os.Open. L'approche correcte est :
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")
Selon la documentation Go, os.Open est destiné à la lecture de fichiers et ne convient pas à la définition de la sortie du journal. os.OpenFile, quant à lui, permet d'ouvrir le fichier à la fois en lecture et en écriture. En définissant os.O_APPEND, les entrées du journal seront ajoutées à la fin du fichier plutôt que d'écraser le contenu existant.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!