2013-06-03 4 views
27

Gibt es einen guten Wrapper für die Level-basierte Anmeldung in Golang? Wenn nicht, wie sollte ich selbst eine implementieren?Wie implementiert man Level-Logging in Golang?

Was ich will, ist ziemlich einfach. Ich möchte ein paar Funktionen, z.

log.Error() 
log.Info() 

etc., die ihre Ausgänge angezeigt als auch auf stdout, da diese in einer Protokolldatei speichern (bezogen auf das Niveau, um das Programm als Kommandozeilen-Argument angegeben). Wie implementiere ich diesen Wrapper?

+2

https://github.com/jcelliott/lumber – elithrar

+0

@elithrar danke! – pymd

+0

@elithrar, danke, es ist einfach und powerfool –

Antwort

3

Werfen Sie einen Blick auf http://cgl.tideland.biz und dort im Paket "applog". Es funktioniert so.

PS: Die gesamte CGL ist derzeit überarbeitet und wird in Kürze mit neuen Funktionen, aber unter einem anderen Namen veröffentlicht werden. ;)

+0

vielen dank für ihre hilfe! – pymd

+0

leider sind die Links tot –

+0

Alle Links sind tot oder haben nichts mit Protokollierung zu tun. – neurosnap

4

Ich denke, seelog passt Ihre requirements, und es scheint ziemlich populär zu sein, da es oft in Protokolldiskussionen auftaucht. Ich habe es nie ernsthaft benutzt, daher kann ich darüber hinaus nichts sagen.

+0

Es sieht so aus, als ob seelog eine globale Sperre für jede Anweisung erwerben/freigeben muss. –

2

stdlog passt genau auf Ihre Bedürfnisse:

log := stdlog.GetFromFlags() 
log.Info("Connecting to the server...") 
log.Errorf("Connection failed: %q", err) 
1

Uber-go/Zap: Schnell, strukturiert, nivelliert Protokollierung in Go

0

https://github.com/hashicorp/logutils ich dies sehr einfach zu sein gefunden zu verwenden, und Sie dies nicht tun müssen auch die Methode ändern, um log.Printf der std Bibliothek aufruft.

0

ich mit rlog im Moment arbeite und wie ihre Annäherung. Der Code sieht gut, einfach und ausreichend dokumentiert aus.

Was mich überzeugt:

  • keine externen Abhängigkeiten
  • i rlog.Info() überall ohne um vorbei verweist
  • gute Nutzung von Umgebungsvariablen
  • beliebige Anzahl von Spuren zum Beispiel verwenden können rlog.Trace(4, "foo")
0

Ich habe Logging-Level-Unterstützung für das integrierte Go-Log-Paket hinzugefügt.

https://github.com/gologme/log

Zusätzlich zum Hinzufügen von Unterstützung für Info, Warn und Debug, Benutzer können auch ihre eigenen beliebigen Protokollebene definieren: Sie können meinen Code finden Sie hier. Protokollierungsstufen werden einzeln aktiviert und deaktiviert. Dies bedeutet, dass Sie Debug-Protokolle aktivieren können, ohne auch alles andere zu erhalten.

Verwandte Themen