Heim > Backend-Entwicklung > Golang > Warum werden meine Go-Log-Nachrichten nicht in die Datei geschrieben?

Warum werden meine Go-Log-Nachrichten nicht in die Datei geschrieben?

Patricia Arquette
Freigeben: 2024-12-10 00:46:11
Original
442 Leute haben es durchsucht

Why Aren't My Go Log Messages Writing to the File?

Protokollmeldungen in eine Datei in Go schreiben

In Go kann das Protokollieren in eine Datei eine unkomplizierte Aufgabe sein. Bei bestimmten Ansätzen können jedoch Fehler auftreten, sodass Sie sich fragen, warum Ihre Protokollmeldungen nicht in die Datei geschrieben werden.

Fehlgeschlagene Ansätze

Der bereitgestellte Code zeigt drei erfolglose Versuche beim Protokollieren in einer Datei:

func TestLogging(t *testing.T) {
    // ...

    // Attempt #1
    log.SetOutput(io.MultiWriter(os.Stderr, f))
    log.Println("hello, logfile")

    // Attempt #2
    log.SetOutput(io.Writer(f))
    log.Println("hello, logfile")

    // Attempt #3
    log.SetOutput(f)
    log.Println("hello, logfile")
}
Nach dem Login kopieren

Diese Versuche schlagen fehl, weil os.Open(), das zum Öffnen der Protokolldatei verwendet wird, geöffnet wird die Datei nur zum Lesen, was mit dem von log.SetOutput() erforderlichen Schreiben nicht kompatibel ist.

Lösung

Um sich erfolgreich in einer Datei anzumelden, sollten Sie os verwenden .OpenFile() stattdessen:

f, err := os.OpenFile("testlogfile", os.O_RDWR | os.O_CREATE | os.O_APPEND, 0666)
if err != nil {
    log.Fatalf("error opening file: %v", err)
}
defer f.Close()

log.SetOutput(f)
log.Println("This is a test log entry")
Nach dem Login kopieren

os.OpenFile() öffnet die Datei mit Lese-, Schreib-, Erstellungs- und Anhängeberechtigungen, sodass Sie erfolgreich Protokollmeldungen schreiben können zur Datei. Denken Sie daran, die Datei nach Abschluss der Protokollierung mit defer f.Close() zu schließen.

Das obige ist der detaillierte Inhalt vonWarum werden meine Go-Log-Nachrichten nicht in die Datei geschrieben?. 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