Heim > Backend-Entwicklung > Golang > Wie leite ich die Exec-Ausgabe in ein Log-in-Go um?

Wie leite ich die Exec-Ausgabe in ein Log-in-Go um?

Linda Hamilton
Freigeben: 2024-11-06 14:36:02
Original
474 Leute haben es durchsucht

How to Redirect Exec Output to a Log in Go?

Exec-Ausgabe in die Anmeldung in Go kopieren

In Go die Ausgabe eines lang laufenden oder nicht abgeschlossenen Prozesses in ein Protokoll umleiten kann eine Herausforderung sein. Während das Warten auf den Abschluss des Prozesses eine einfache Ausgabeerfassung ermöglicht, erfordert die Echtzeitprotokollierung in Nicht-Terminal-Umgebungen einen anderen Ansatz.

Eine Lösung besteht darin, eine Pipe zu erstellen, um die Standardausgabe des Prozesses mit einem gepufferten Scanner zu verbinden:

stdout, err := cmd.StdoutPipe()
if err != nil {
    return 0, err
}

// start the command after having set up the pipe
if err := cmd.Start(); err != nil {
    return 0, err
}

// read command's stdout line by line
in := bufio.NewScanner(stdout)

for in.Scan() {
    log.Printf(in.Text()) // write each line to your log, or anything you need
}
if err := in.Err(); err != nil {
    log.Printf("error: %s", err)
}
Nach dem Login kopieren

Dieser Code erstellt eine stdout-Pipe, startet den Befehl und verwendet dann einen Scanner, um die Ausgabe Zeile für Zeile zu lesen. Jede Zeile kann dann nach Bedarf protokolliert oder verarbeitet werden. Indem Sie Stdout auf diese Weise handhaben, können Sie die Ausgabe des Prozesses in Ihr Protokoll umleiten, während er noch läuft, und so eine rechtzeitige Protokollierung wichtiger Informationen für Ihren Dienst sicherstellen.

Das obige ist der detaillierte Inhalt vonWie leite ich die Exec-Ausgabe in ein Log-in-Go 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