golog simple powerful
异步简单易用功能想打的日志库
安装
go get github.com/hyahm/golog
日志格式化(text/template模板语法)
通过 golog.Format 设置输出格式,默认的输出格式如下
{{ .Ctime }} - [{{ .Level }}]{{ if .Label }} - {{ range $k,$v := .Label}}[{{$k}}:{{$v}}]{{end}}{{end}} - {{.Hostname}} - {{.Line}} - {{.Msg}}
最简单的同步打印控制台
package main
import (
"github.com/hyahm/golog"
)
func main() {
defer golog.Sync()
golog.Info("one")
golog.Info("adf", "cander")
}
格式化打印
package main
import (
"github.com/hyahm/golog"
)
func main() {
defer golog.Sync()
golog.Infof("adf%s\n", "cander")
golog.Debug("foo")
golog.Level = golog.DEBUG
golog.Debug("bar")
}
按照日志级别打印
package main
import (
"github.com/hyahm/golog"
)
func main() {
defer golog.Sync()
golog.Debug("foo")
golog.Level = golog.DEBUG
golog.Debug("bar")
}
package main
import (
"github.com/hyahm/golog"
)
func main() {
defer golog.Sync()
golog.Debug("foo")
golog.Level = golog.DEBUG
golog.Debug("bar")
}
日志颜色设置(控制台打印才有效, 写入文件无效)
package main
import (
"github.com/fatih/color"
"github.com/hyahm/golog"
)
func main() {
defer golog.Sync()
infoColor := make([]color.Attribute, 0)
infoColor = append(infoColor, color.FgBlue, color.BgGreen)
golog.SetColor(golog.INFO, infoColor)
golog.Infof("adf%s", "cander")
}
日志写入文件
package main
import (
"github.com/hyahm/golog"
)
func main() {
defer golog.Sync()
golog.InitLogger("log/test.log", 0, true)
golog.Infof("adf%s", "cander")
}
日志文件自动清除
package main
import (
"time"
"github.com/hyahm/golog"
)
func main() {
defer golog.Sync()
golog.InitLogger("log/test.log", 0, true, time.Hour*24*7)
golog.Infof("adf%s", "cander")
}
增加Label标签
package main
import (
"github.com/hyahm/golog"
)
func main() {
defer golog.Sync()
golog.AddLabel("key1", "value1")
golog.AddLabel("key2", "value2")
golog.Info("foo")
}
多文件操作
package main
import (
"github.com/hyahm/golog"
)
func main() {
defer golog.Sync()
logger1 := golog.NewLog("log/test1.log", 0, false)
logger2 := golog.NewLog("log/test2.log", 0, false)
logger1.Info("foo")
logger2.Info("foo")
}
多文件操作关闭
package main
import (
"fmt"
"os"
"os/signal"
"syscall"
"time"
"github.com/hyahm/golog"
)
func main() {
ch := make(chan os.Signal, 1)
go func() {
log1 := golog.NewLog("aaa.log", 0, false)
for {
time.Sleep(time.Second)
log1.Info("for")
}
}()
go func() {
log2 := golog.NewLog("aaa.log", 0, false)
for {
time.Sleep(time.Second)
log2.Info("for")
break
}
log2.Close()
}()
signal.Notify(ch, syscall.SIGHUP, syscall.SIGINT)
select {
case <-ch:
fmt.Println("exit")
}
}
接口方法调试, 可以知道是那一行调用了这个方法
package main
import (
"github.com/hyahm/golog"
)
func main() {
defer golog.Sync()
golog.Info("foo")
golog.Level = golog.DEBUG
test()
golog.Info("bar")
}
func test() {
golog.UpFunc(1, "who call me")
}