Gleichzeitiges Protokollieren in der Konsole und Datei in Go
Um Protokollmeldungen an eine Datei weiterzuleiten, verwendet der Code normalerweise log.SetOutput(logFile) . Wenn Sie jedoch sowohl eine Konsolenausgabe als auch eine Protokollierung in einer Datei wünschen, finden Sie hier eine Lösung mit io.MultiWriter.
Was ist io.MultiWriter?
Ein io.MultiWriter ermöglicht das gleichzeitige Schreiben von Daten an mehrere Ziele. Es ähnelt dem Verhalten des Unix-Befehls tee.
Lösung
So melden Sie sich sowohl bei der Konsole als auch bei einer Datei an:
logFile, err := os.OpenFile("log.txt", os.O_CREATE | os.O_APPEND | os.O_RDWR, 0666) if err != nil { panic(err) }
mw := io.MultiWriter(os.Stdout, logFile)
log.SetOutput(mw)
Beispiel
package main import ( "log" "os" "io" ) func main() { logFile, err := os.OpenFile("log.txt", os.O_CREATE | os.O_APPEND | os.O_RDWR, 0666) if err != nil { panic(err) } mw := io.MultiWriter(os.Stdout, logFile) log.SetOutput(mw) log.Println("This is a log message") }
Das obige ist der detaillierte Inhalt vonWie melde ich mich in Go gleichzeitig bei der Konsole und der Datei an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!