Heim  >  Artikel  >  Backend-Entwicklung  >  Wie schreibe ich die Befehlsausgabe gleichzeitig in die Konsole und in die Protokolldatei?

Wie schreibe ich die Befehlsausgabe gleichzeitig in die Konsole und in die Protokolldatei?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-04 05:19:29981Durchsuche

How Do I Simultaneously Write Command Output to Console and Log File?

Befehlsausgabe gleichzeitig in die Konsole und Protokolldatei schreiben

Sie möchten die Ausgabe eines Befehls sowohl an die Konsole als auch an eine Protokolldatei umleiten. Der vorhandene Code sendet Ausgaben an die Konsole, protokolliert sie jedoch nicht. Um beide Streams umzuleiten, verwenden Sie die unten beschriebene Technik.

Um Ihre Ziele zu erreichen, sollten Sie den folgenden Ansatz in Betracht ziehen:

Stdout und Stderr auf einen MultiWriter umleiten

Erstellen Sie einen MultiWriter, der die Datei- und Standardausgabe kombiniert. Weisen Sie dann, bevor Sie den Befehl ausführen, diesen MultiWriter den Stdout- und Stdderr-Streams des Befehls zu.

Beispielcode

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

Dieser Code öffnet eine Protokolldatei, erstellt eine MultiWriter, legt die Streams des Befehls auf den MultiWriter fest und führt den Befehl aus. Die Ausgabe wird in Echtzeit und in der richtigen Reihenfolge sowohl an die Konsole als auch an die Protokolldatei weitergeleitet.

Das obige ist der detaillierte Inhalt vonWie schreibe ich die Befehlsausgabe gleichzeitig in die Konsole und in die Protokolldatei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn