BLog4go 是高性能日志库。创新地使用“边解析边输出”方法进行日志输出,同时支持回调函数、日志淘汰和配置文件。可以解决高并发,调用日志函数频繁的情境下,日志库造成的性能问题。
特性:
*
_Partially write_ to the [bufio.Writer](https://golang.org/pkg/bufio/#Writer) as soon as posible while formatting message to improve performance
*
支持将不同日志级别数据写到不同文件
*
支持使用 XML 格式的配置文件
*
可配置的日志循环策略
*
每次日志动作都可异步调用用户自定义的钩子
*
可调整日志格式
*
无需重启更改日志行为
*
日志启动时使用环境变量的配置
*
后台记录
*
可根据配置文件制定文件写操作
*
不同的输出渠道
*
控制台
*
文件
*
Socket 套接字
快速开始:
<pre class="brush:cpp ;toolbar: true; auto-links: false;">package main
import (
log "github.com/YoungPioneers/blog4go"
"fmt"
"os"
)
// optionally set user defined hook for logging
type MyHook struct {
something string
}
// when log-level exceed level, call the hook
// level is the level associate with that logging action.
// message is the formatted string already written.
func (self *MyHook) Fire(level log.Level, message string) {
fmt.Println(message)
}
func main() {
// init a file write using xml config file
err := log.NewFileWriterFromConfigAsFile("config.xml")
if nil != err {
fmt.Println(err.Error())
os.Exit(1)
}
defer log.Close()
// initialize your hook instance
hook := new(MyHook)
log.SetHook(hook) // writersFromConfig can be replaced with writers
log.SetHookLevel(log.INFO)
// optionally set output colored
log.SetColored(true)
log.Debugf("Good morning, %s", "eddie")
log.Warn("It's time to have breakfast")
}</pre>
config.xml
<pre class="brush:xml;toolbar: true; auto-links: false;"><blog4go minlevel="info">
<filter levels="trace">
<rotatefile path="trace.log" type="time"></rotatefile>
</filter>
<filter levels="debug,info" colored="true">
<file path="debug.log"></file>
</filter>
<filter levels="error,critical">
<rotatefile path="error.log" type="size" rotateSize="50000000" rotateLines="8000000"></rotatefile>
</filter>
</blog4go></pre>