2012-11-21 12 views
9

Jaki jest idiomatyczny sposób logowania do Go?Jak zaimplementować rejestrowanie idiomatyczne w bibliotece Go?

+0

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

Odpowiedz

11

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.

+11

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(). –

+0

@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

Powiązane problemy