Ho trascorso molto tempo ora a cercare e leggere post sull'argomento, ma ho ancora ricevuto una nota per ottenere pienamente la risposta alla mia domanda - o forse ho solo bisogno di ulteriori chiarimenti sulle risposte esistenti.Registrazione globale (attraverso pacchetti)
Ho letto il post this che ha lo stesso titolo del mio, ma si tratta di eseguire il log delle routine di go piuttosto che dei pacchetti.
Quello che sto cercando di risolvere è l'accesso all'app principale e ai pacchetti che utilizza. Ho bisogno di un logger che può accedere a più posizioni (che può essere fatto con io.MultiWriter) e può fare cose come log.Error() e log.Debug()
So che ci sono pacchetti che fanno questo e io so come implementare quelle cose me stesso.
Quello che non riesco a capire è come usarlo correttamente con i miei pacchetti.
Un modo è ovviamente creare il logger in main e poi passarlo a tutte le funzioni che necessitano di registrazione. Ma sembra imbarazzante.
La mia soluzione ideale sarebbe quella di avere un logger come il logger globale incorporato nel pacchetto di log, ma con le funzionalità aggiunte come sopra.
Principalmente voglio questo per la registrazione debug facoltativa all'interno dei pacchetti, quindi posso accenderlo in una versione di produzione, se necessario.
Qual è il modo corretto per farlo?
Perché non utilizzare una variabile di registrazione globale in ogni pacchetto e crearli/impostarli nel pacchetto principale? –
Forse puoi provare https://github.com/golang/glog. Anche se non ha Debug, ha Info, Warning, Error e Fatal. Permette anche la registrazione del livello di verbosità. Hmm, ma non consente nemmeno di impostare lo scrittore. Oh bene! Vale la pena commentare – ANisus