Jaki jest idiomatyczny sposób logowania do Go?Jak zaimplementować rejestrowanie idiomatyczne w bibliotece Go?
Odpowiedz
Utwórz plik, który deklaruje zmienną globalną rejestrator. Następnie użyj funkcji idiomatic init() Go, aby zainicjować zmienną podczas uruchamiania.
logger.go:
package xxx
import (
"log"
"os"
)
var logger *log.Logger
func init() {
logger = log.New(os.Stderr, "xxx: ", log.Ldate | log.Ltime | log.Lshortfile)
}
example.go:
func test() {
logger.Println("Logged")
}
Metoda ta oferuje korzyści, które można wykorzystać pojedynczą realizację rejestratora, który może być skonfigurowany z pojedynczym plik.
EDIT: ThomasKappler zwrócił uwagę, że jeśli używasz tylko jednego globalnego rejestratora, można użyć pakietu dziennika jest wbudowany rejestratora i skonfigurować go z SetFlags. Jedyna różnica polega na tym, że musisz wyraźniej i zaimportować pakiet dziennika.
Jeśli używasz tylko jednego globalnego programu rejestrującego, możesz pominąć tworzenie własnych i używać funkcji pakietu dziennika, takich jak log.Println itd. Możesz nadal skonfigurować go za pomocą log.SetFlags(). –
@ThomasKappler Dzięki, nie wiedziałem tego. Wolę używać tej metody, ponieważ mogę rozszerzyć program rejestrujący bez przerywania istniejącej funkcjonalności (nie muszę też wszędzie importować pakietu logów) – liamzebedee
Istnieje kilka bibliotek zewnętrznych, które zapewniają więcej pełnych implementacji funkcji. Na przykład w standardowej bibliotece przegapiłem wygodną opcję niestandardowego formatowania i poziomów logowania (debugowanie, informacje, ...) i kończę wdrażanie własnej biblioteki - [go-log] (https://github.com/scale -it/go-log). Spójrz na to. –