An golang log lib, supports tracing and level, wrap by standard log lib
shell
go get github.com/chzyer/logex source code
import "github.com/chzyer/logex" // package name is logex func main(){logex.Info("Hello!") } import "github.com/chzyer/logex" func main(){logex.Println("") logex.Debug("debug staff.") // Only show if has an "DEBUG" named env variable(whatever value). logex.Info("info") logex.Warn("") logex.Fatal("") // also trigger exec "os.Exit(1)" logex.Error(err) // print error logex.Struct(obj) // print objs follow such layout "%T(%+v)" logex.Pretty(obj) // print objs as JSON-style, more readable and hide non-publish properties, just JSON } source code
type MyStruct struct{BiteMe bool } may change to
type MyStruct struct{BiteMe bool logex.Logger // just this } func main(){ms := new(MyStruct) ms.Info("woo!") } All log will attach theirs stack info. Stack Info will shown by an layout, {packageName}.{FuncName}:{FileName}:{FileLine}
package main import "github.com/chzyer/logex" func test(){logex.Pretty("hello") } func main(){test() } response
2014/10/10 15:17:14 [main.test:testlog.go:6][PRETTY] "hello" You can trace an error if you want.
package main import ( "github.com/chzyer/logex" "os" ) func openfile() (*os.File, error){f, err := os.Open("xxx") if err != nil{err = logex.Trace(err) } return f, err } func test() error{f, err := openfile() if err != nil{return logex.Trace(err) } f.Close() return nil } func main(){err := test() if err != nil{logex.Error(err) return } logex.Info("test success") } response
2014/10/10 15:22:29 [main.main:testlog.go:28][ERROR] [main.openfile:11;main.test:19] open xxx: no such file or directory