Maison >développement back-end >Golang >Pourquoi mes messages de journal Go n'écrivent-ils pas dans le fichier ?

Pourquoi mes messages de journal Go n'écrivent-ils pas dans le fichier ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-10 00:46:11436parcourir

Why Aren't My Go Log Messages Writing to the File?

É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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn