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 ?
É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!