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>
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 :
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!