https://github.com/chzyer/logex
  
  
    An golang log lib, supports tracking and level, wrap by standard log lib 
    https://github.com/chzyer/logex
  
        Last synced: 3 months ago 
        JSON representation
    
An golang log lib, supports tracking and level, wrap by standard log lib
- Host: GitHub
 - URL: https://github.com/chzyer/logex
 - Owner: chzyer
 - License: mit
 - Created: 2014-10-10T06:38:39.000Z (about 11 years ago)
 - Default Branch: master
 - Last Pushed: 2024-04-02T15:49:33.000Z (over 1 year ago)
 - Last Synced: 2025-07-08T01:39:07.207Z (4 months ago)
 - Language: Go
 - Homepage:
 - Size: 30.3 KB
 - Stars: 42
 - Watchers: 9
 - Forks: 13
 - Open Issues: 2
 - 
            Metadata Files:
            
- Readme: README.md
 - License: LICENSE
 
 
Awesome Lists containing this project
- awesome-go - logex - Golang log lib, supports tracking and level, wrap by standard log lib. (Logging / Search and Analytic Databases)
 - awesome-go - logex - An golang log lib, supports tracking and level, wrap by standard log lib - ★ 33 (Logging)
 - awesome-go-extra - logex - 10-10T06:38:39Z|2022-04-24T13:15:45Z| (Logging / Advanced Console UIs)
 - awesome-go-zh - logex
 
README
          Logex
=======
[](https://travis-ci.org/chzyer/logex)
[](https://godoc.org/github.com/chzyer/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
```{go}
import "github.com/chzyer/logex" // package name is logex
func main() {
  logex.Info("Hello!")
}
```
Level
=======
```{go}
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
```{go}
type MyStruct struct {
  BiteMe bool
}
```
may change to
```{go}
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}`
```{go}
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.
```{go}
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
```