Heim  >  Artikel  >  Backend-Entwicklung  >  Wie leite ich die Befehlsausgabe sowohl in die Konsole als auch in die Protokolldatei um und behalte dabei die Reihenfolge bei?

Wie leite ich die Befehlsausgabe sowohl in die Konsole als auch in die Protokolldatei um und behalte dabei die Reihenfolge bei?

DDD
DDDOriginal
2024-11-04 03:42:01147Durchsuche

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

Befehlsausgabe auf Konsole und Protokolldatei umleiten

Um gleichzeitig stdout und stderr eines Befehls anzuzeigen und zu protokollieren und dabei die Ausgabereihenfolge beizubehalten, können Sie das io der Standardbibliothek verwenden .MultiWriter.

Code Snippet

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

Erklärung

  1. Öffnen Sie eine Datei zur Protokollierung und erstellen Sie einen MultiWriter, der die Datei und die Standardausgabe kombiniert.
  2. Erstellen Sie einen Befehl und geben Sie beides an stdout und stderr sollten den MultiWriter verwenden.
  3. Führen Sie den Befehl aus, der die Ausgabe an beide ausgibt die Konsole und die Protokolldatei in Echtzeit unter Beibehaltung der ursprünglichen Ausgabereihenfolge.

Das obige ist der detaillierte Inhalt vonWie leite ich die Befehlsausgabe sowohl in die Konsole als auch in die Protokolldatei um und behalte dabei die Reihenfolge bei?. 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