Maison > développement back-end > Golang > Comment enregistrer et imprimer simultanément la sortie des commandes sur la console ?

Comment enregistrer et imprimer simultanément la sortie des commandes sur la console ?

Patricia Arquette
Libérer: 2024-11-04 01:12:02
original
549 Les gens l'ont consulté

How to Simultaneously Log and Print Command Output to Console?

Console simultanée et sortie de journal pour les commandes Stdout et Stderr

Le but du code fourni est d'imprimer les commandes stdout et stderr sur la console en temps réel tout en les enregistrant simultanément dans un fichier dans l'ordre de la console, sans modifier la commande elle-même.

Pour y parvenir, nous pouvons utiliser le type io.MultiWriter. Voici comment :

<code class="go">package main

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

func main() {
    // Logging capability
    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()

    // Define a MultiWriter that includes both the log file and stdout
    multiWriter := io.MultiWriter(f, os.Stdout)

    // Set stdout and stderr of the command to the MultiWriter
    cmd := exec.Command("php", "randomcommand.php")
    cmd.Stdout = multiWriter
    cmd.Stderr = multiWriter

    if err := cmd.Run(); err != nil {
        log.Fatal(err)
    }
}</code>
Copier après la connexion

En définissant multiWriter comme une combinaison du fichier journal et de la sortie standard, nous écrivons efficacement la sortie de la commande vers les deux destinations simultanément. cmd.Run() se bloque jusqu'à la fin de la commande, garantissant ainsi le maintien de l'ordre de sortie.

Cette solution satisfait à toutes les exigences :

  • Imprime stdout et stderr sur la console en temps réel.
  • Enregistre stdout et stderr dans un fichier, reflétant la sortie de la console.
  • Respecte l'ordre exact des écritures sur stdout et stderr.
  • Ne modifie pas la commande elle-même.

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