Maison > développement back-end > Golang > Comment rediriger la sortie d'exécution vers un enregistreur en temps réel dans Go ?

Comment rediriger la sortie d'exécution vers un enregistreur en temps réel dans Go ?

Barbara Streisand
Libérer: 2024-11-08 01:59:02
original
999 Les gens l'ont consulté

How to Redirect Execution Output to a Logger in Real-time in Go?

Redirection de la sortie d'exécution vers Logger dans Go

Dans Go, le package exec fournit des mécanismes pour exécuter des commandes externes. Bien que la méthode CombinedOutput puisse capturer l'intégralité du résultat une fois la commande terminée, elle peut ne pas convenir aux processus de longue durée ou inachevés.

Pour rediriger la sortie d'une commande vers un enregistreur en temps réel, un plus une approche flexible est nécessaire. Une technique consiste à utiliser un canal pour connecter la sortie de la commande au logger.

Voici un exemple d'extrait de code :

import (
    "bufio"
    "log"
    "os/exec"
)

func main() {
    cmd := exec.Command("yes")

    // Create a pipe to connect the command's stdout to the logger
    stdout, err := cmd.StdoutPipe()
    if err != nil {
        log.Fatalf("Failed to create stdout pipe: %v", err)
    }

    // Start the command
    if err := cmd.Start(); err != nil {
        log.Fatalf("Failed to start command: %v", err)
    }

    // Create a buffered reader to read the output line by line
    in := bufio.NewScanner(stdout)

    // Read the output and log it in real-time
    for in.Scan() {
        log.Printf(in.Text())
    }

    if err := in.Err(); err != nil {
        log.Printf("Error reading command output: %v", err)
    }
}
Copier après la connexion

Dans cet exemple, le flux Stderr peut également être géré simultanément en créant un goroutine séparé. En acheminant la sortie de la commande vers l'enregistreur, les développeurs peuvent capturer et enregistrer sa sortie en temps réel, ce qui facilite la surveillance et le dépannage des processus dans leurs applications.

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