Ich habe Hunderte von Subroutinen, die mit log.Println ()
in die Protokolldatei schreiben
Ich verwende log.Println, um in die Datei error.log zu schreiben.
Ist meine Vorgehensweise korrekt? Oder sollte ich Kanal verwenden, um sicherzustellen, dass sich nur ein Prozess zu einer Zeit in Datei anmeldet, oder wird es von Protokollpaket inhärent erledigt?
Passt das Protokollpaket auch zur Pufferung oder schreibt es direkt in die Datei?
Von log.go :
%Vor% Da fast alle Paket log
Ausgabefunktionen durch Output
gehen, und es gibt einen Mutex in Output
, kann man sicher sagen, dass sie nebenläufigkeitssicher sind.
Ich kann wirklich empfehlen, die Dokumentation zu lesen:
Ein Logger stellt ein aktives Logging-Objekt dar, das Ausgangszeilen für einen io.Writer erzeugt. Jede Protokollierungsoperation führt einen einzelnen Aufruf der Write-Methode des Writers aus. Ein Logger kann gleichzeitig von mehreren Goroutines verwendet werden; Es garantiert die Serialisierung des Zugriffs auf den Writer.
Siehe Ссылка