glg is simple golang logging library
Go 1.16
go get github.com/kpango/glg
package main
import (
"net/http"
"time"
"github.com/kpango/glg"
)
// NetWorkLogger sample network logger
type NetWorkLogger struct{}
func (n NetWorkLogger) Write(b []byte) (int, error) {
// http.Post("localhost:8080/log", "", bytes.NewReader(b))
http.Get("http://127.0.0.1:8080/log")
glg.Success("Requested")
glg.Infof("RawString is %s", glg.RawString(b))
return 1, nil
}
func main() {
// var errWriter io.Writer
// var customWriter io.Writer
infolog := glg.FileWriter("/tmp/info.log", 0666)
customTag := "FINE"
customErrTag := "CRIT"
errlog := glg.FileWriter("/tmp/error.log", 0666)
defer infolog.Close()
defer errlog.Close()
glg.Get().
SetMode(glg.BOTH). // default is STD
// DisableColor().
// SetMode(glg.NONE).
// SetMode(glg.WRITER).
// SetMode(glg.BOTH).
// InitWriter().
// AddWriter(customWriter).
// SetWriter(customWriter).
// AddLevelWriter(glg.LOG, customWriter).
// AddLevelWriter(glg.INFO, customWriter).
// AddLevelWriter(glg.WARN, customWriter).
// AddLevelWriter(glg.ERR, customWriter).
// SetLevelWriter(glg.LOG, customWriter).
// SetLevelWriter(glg.INFO, customWriter).
// SetLevelWriter(glg.WARN, customWriter).
// SetLevelWriter(glg.ERR, customWriter).
AddLevelWriter(glg.INFO, infolog). // add info log file destination
AddLevelWriter(glg.ERR, errlog). // add error log file destination
AddStdLevel(customTag, glg.STD, false). //user custom log level
AddErrLevel(customErrTag, glg.STD, true). // user custom error log level
SetLevelColor(glg.TagStringToLevel(customTag), glg.Cyan). // set color output to user custom level
SetLevelColor(glg.TagStringToLevel(customErrTag), glg.Red) // set color output to user custom level
glg.Info("info")
glg.Infof("%s : %s", "info", "formatted")
glg.Log("log")
glg.Logf("%s : %s", "log", "formatted")
glg.Debug("debug")
glg.Debugf("%s : %s", "debug", "formatted")
glg.Trace("trace")
glg.Tracef("%s : %s", "trace", "formatted")
glg.Warn("warn")
glg.Warnf("%s : %s", "warn", "formatted")
glg.Error("error")
glg.Errorf("%s : %s", "error", "formatted")
glg.Success("ok")
glg.Successf("%s : %s", "ok", "formatted")
glg.Fail("fail")
glg.Failf("%s : %s", "fail", "formatted")
glg.Print("Print")
glg.Println("Println")
glg.Printf("%s : %s", "printf", "formatted")
// set global log level to ERR level
glg.Info("before setting level to ERR this message will show")
glg.Get().SetLevel(glg.ERR)
glg.Info("after setting level to ERR this message will not show")
glg.Error("this log is ERR level this will show")
glg.Get().SetLevel(glg.DEBG)
glg.Info("log level is now DEBG, this INFO level log will show")
glg.CustomLog(customTag, "custom logging")
glg.CustomLog(customErrTag, "custom error logging")
glg.Get().AddLevelWriter(glg.DEBG, NetWorkLogger{}) // add info log file destination
http.Handle("/glg", glg.HTTPLoggerFunc("glg sample", func(w http.ResponseWriter, r *http.Request) {
glg.New().
AddLevelWriter(glg.Info, NetWorkLogger{}).
AddLevelWriter(glg.Info, w).
Info("glg HTTP server logger sample")
}))
http.ListenAndServe("port", nil)
// fatal logging
glg.Fatalln("fatal")
}
- Fork it ( https://github.com/kpango/glg/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create new Pull Request
glg released under MIT license, refer LICENSE file.