Maison >développement back-end >Golang >Comment rediriger la sortie de la commande vers la console et le fichier journal tout en maintenant l'ordre ?

Comment rediriger la sortie de la commande vers la console et le fichier journal tout en maintenant l'ordre ?

DDD
DDDoriginal
2024-11-04 03:42:01192parcourir

How to Redirect Command Output to Both Console and Log File while Maintaining Order?

Redirection de la sortie de commande vers la console et le fichier journal

Pour afficher et enregistrer simultanément la sortie standard et le stderr d'une commande tout en préservant l'ordre de sortie, vous pouvez utiliser l'io de la bibliothèque standard .MultiWriter.

Extrait de code

<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("ls")
    cmd.Stderr = mwriter
    cmd.Stdout = mwriter
    err = cmd.Run() //blocks until sub process is complete
    if err != nil {
        panic(err)
    }
}</code>

Explication

  1. Ouvrez un fichier pour la journalisation et créez un MultiWriter qui combine le fichier et la sortie standard.
  2. Créez une commande et spécifiez que stdout et stderr doivent utiliser le MultiWriter.
  3. Exécutez la commande, qui imprimera la sortie sur la console et le fichier journal en temps réel tout en conservant l'ordre de sortie d'origine. .

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