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