Maison > développement back-end > Golang > Pourquoi mon code Go ne parvient-il pas à écrire des journaux dans un fichier et comment puis-je y remédier ?

Pourquoi mon code Go ne parvient-il pas à écrire des journaux dans un fichier et comment puis-je y remédier ?

Barbara Streisand
Libérer: 2024-12-16 06:34:18
original
849 Les gens l'ont consulté

Why Does My Go Code Fail to Write Logs to a File, and How Can I Fix It?

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")
}
Copier après la connexion

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")
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal