logex
logex copied to clipboard
An golang log lib, supports tracking and level, wrap by standard log lib
Logex
An golang log lib, supports tracing and level, wrap by standard log lib
How To Get
shell
go get github.com/chzyer/logex
source code
import "github.com/chzyer/logex" // package name is logex
func main() {
logex.Info("Hello!")
}
Level
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
}
Extendability
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!")
}
Runtime Tracing
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"
Error Tracing
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