Maison  >  Article  >  développement back-end  >  Comment puis-je écrire simultanément la sortie de la commande dans la console et dans le fichier journal ?

Comment puis-je écrire simultanément la sortie de la commande dans la console et dans le fichier journal ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-04 05:19:291036parcourir

How Do I Simultaneously Write Command Output to Console and Log File?

Écriture simultanée de la sortie d'une commande dans la console et dans le fichier journal

Vous souhaitez rediriger la sortie d'une commande vers la console et un fichier journal. Le code existant envoie la sortie à la console, mais ne l'enregistre pas. Pour rediriger les deux flux, utilisez la technique décrite ci-dessous.

Pour atteindre vos objectifs, envisagez l'approche suivante :

Rediriger Stdout et Stderr vers un MultiWriter

Créez un MultiWriter qui combine le fichier et la sortie standard. Ensuite, avant d'exécuter la commande, attribuez ce MultiWriter aux flux Stdout et Stderr de la commande.

Exemple de code

<code class="go">package main

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

func main() {
    // Open the log file for writing
    f, err := os.OpenFile("log.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
    if err != nil {
        log.Fatalf("Error opening file: %v", err)
    }
    defer f.Close()

    // Create a MultiWriter that combines the log file and standard output
    mwriter := io.MultiWriter(f, os.Stdout)

    // Construct the command
    cmd := exec.Command("ls")

    // Redirect Stdout and Stderr to the MultiWriter
    cmd.Stdout = mwriter
    cmd.Stderr = mwriter

    // Run the command
    err = cmd.Run()
    if err != nil {
        panic(err)
    }
}</code>

Ce code ouvre un fichier journal, crée un MultiWriter, définit les flux de la commande sur MultiWriter et exécute la commande. La sortie sera redirigée vers la console et le fichier journal en temps réel et dans le bon ordre.

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