Maison >développement back-end >Golang >Comment réussir à écrire des journaux dans un fichier dans Go ?

Comment réussir à écrire des journaux dans un fichier dans Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-13 07:06:13552parcourir

How to Successfully Write Logs to a File in Go?

Écriture de journaux dans un fichier dans Go

Pour tenter de se connecter à un fichier à l'aide de Go, plusieurs approches ont été tentées, notamment :

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")
}

Cependant, malgré la création du fichier journal (logfile), aucune information n'y a été écrite.

La solution consiste à utiliser os.OpenFile au lieu de os.Open, qui offre plus de contrôle sur les autorisations d'accès aux fichiers. Le code suivant écrit avec succès dans le fichier journal :

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")

Cette approche utilise os.OpenFile avec les indicateurs suivants :

  • os.O_RDWR : ouvre le fichier en lecture-écriture mode
  • os.O_CREATE : Crée le fichier si ce n'est pas le cas exist
  • os.O_APPEND : ajoute des données au fichier s'il existe

En utilisant os.OpenFile, vous pouvez spécifier les autorisations d'accès au fichier nécessaires pour garantir que les journaux sont correctement écrits dans le fichier.

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