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
Libérer: 2024-12-10 00:46:11
original
442 Les gens l'ont consulté

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

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

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!

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