Heim > Backend-Entwicklung > Golang > Wie leite ich die Ausführungsausgabe in Go in Echtzeit an einen Logger um?

Wie leite ich die Ausführungsausgabe in Go in Echtzeit an einen Logger um?

Barbara Streisand
Freigeben: 2024-11-08 01:59:02
Original
990 Leute haben es durchsucht

How to Redirect Execution Output to a Logger in Real-time in Go?

Ausführungsausgabe an Logger in Go umleiten

In Go stellt das Exec-Paket Mechanismen zum Ausführen externer Befehle bereit. Während die CombinedOutput-Methode die gesamte Ausgabe erfassen kann, sobald der Befehl abgeschlossen ist, ist sie möglicherweise nicht für lang laufende oder nicht abgeschlossene Prozesse geeignet.

Um die Ausgabe eines Befehls in Echtzeit an einen Logger umzuleiten, ist ein weiterer Schritt erforderlich Ein flexibler Ansatz ist erforderlich. Eine Technik besteht darin, die Ausgabe des Befehls über eine Pipe mit dem Logger zu verbinden.

Hier ist ein Beispiel-Codeausschnitt:

import (
    "bufio"
    "log"
    "os/exec"
)

func main() {
    cmd := exec.Command("yes")

    // Create a pipe to connect the command's stdout to the logger
    stdout, err := cmd.StdoutPipe()
    if err != nil {
        log.Fatalf("Failed to create stdout pipe: %v", err)
    }

    // Start the command
    if err := cmd.Start(); err != nil {
        log.Fatalf("Failed to start command: %v", err)
    }

    // Create a buffered reader to read the output line by line
    in := bufio.NewScanner(stdout)

    // Read the output and log it in real-time
    for in.Scan() {
        log.Printf(in.Text())
    }

    if err := in.Err(); err != nil {
        log.Printf("Error reading command output: %v", err)
    }
}
Nach dem Login kopieren

In diesem Beispiel kann der Stderr-Stream auch gleichzeitig durch Erstellen verarbeitet werden eine separate Goroutine. Durch die Weiterleitung der Befehlsausgabe an den Logger können Entwickler die Echtzeitausgabe erfassen und protokollieren, wodurch es einfacher wird, Prozesse in ihren Anwendungen zu überwachen und Fehler zu beheben.

Das obige ist der detaillierte Inhalt vonWie leite ich die Ausführungsausgabe in Go in Echtzeit an einen Logger um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage