Redirection simultanée de la sortie de commande vers la console et le fichier journal
Pour rediriger la sortie standard et le stderr d'une commande vers la console et un fichier journal en temps réel, vous pouvez utiliser le type io.MultiWriter dans Go. Voici comment :
Dans l'extrait de code fourni, le code redirige uniquement vers la console car les champs Stdout et Stderr de la cmd sont respectivement définis sur os.Stdout et os.Stderr. Pour rediriger à la fois vers la console et un fichier journal, modifiez le code comme suit :
<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() mwriter := io.MultiWriter(f, os.Stdout) cmd := exec.Command("php", "randomcommand.php") cmd.Stdout = mwriter cmd.Stderr = mwriter if err := cmd.Run(); err != nil { log.Fatal(err) } }</code>
La variable mwriter est une instance de io.MultiWriter qui contient à la fois un fichier journal et la sortie standard. En définissant Stdout et Stderr de la commande sur ce mwriter, la sortie de la commande est écrite simultanément aux deux emplacements.
Le script randomcommand.php peut rester le même, en alternant entre l'écriture sur stdout et stderr 20 fois. Lorsque vous exécutez le programme Go, la sortie sera imprimée sur la console en temps réel et également enregistrée dans le fichier journal spécifié, en conservant l'ordre exact des écritures sur stdout et stderr.
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!