Écrire des messages de journal dans un fichier dans Go
Dans Go, se connecter à un fichier peut être une tâche simple. Cependant, certaines approches peuvent rencontrer des erreurs, vous laissant vous demander pourquoi vos messages de journal ne sont pas écrits dans le fichier.
Approches ayant échoué
Le code fourni montre trois tentatives infructueuses lors de la connexion à un fichier :
func TestLogging(t *testing.T) { // ... // 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") }
Ces tentatives échouent car os.Open(), utilisé pour ouvrir le fichier journal, ouvre le fichier en lecture seule, ce qui est incompatible avec l'écriture requise par log.SetOutput().
Solution
Pour réussir à vous connecter à un fichier, vous devez utiliser os.OpenFile() à la place :
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")
os.OpenFile() ouvre le fichier avec des autorisations de lecture, d'écriture, de création et d'ajout, vous permettant d'écrire avec succès des messages de journal dans le fichier. N'oubliez pas de fermer le fichier une fois la journalisation terminée en utilisant defer f.Close().
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!