您的位置:首页 > 编程语言 > Go语言

golang环境下的日志记录器-系列之二

2017-07-18 10:35 465 查看
本节工具类对loggor进行了异步封装,优化了日志输出时的线程并发,在高并发的场合适用,但会增加CPU负荷及数据落地时序有一定影响,使用接口无缝兼容loggor工具类

asyncLoggor.go

//@description	异步日志器,将同步日志器封装为异步
//@author chenbintao
//@data 2017-06-20	09:31	初稿
//	2017-06-30	11:31	调试

package loggor

type AsyncLogger struct {
logger *Logger
}

func (this *AsyncLogger) init() *AsyncLogger {
if nil == this.logger {
this.logger = &Logger{}
}
return this
}

func (this *AsyncLogger) Sync(logger *Logger) *AsyncLogger {
this.logger = logger
return this
}

func (this *AsyncLogger) SetDebug(is_debug bool) {
this.init()
IS_DEBUG = is_debug
this.logger.SetDebug(is_debug)
}

func (this *AsyncLogger) SetType(tp uint) {
this.init()
this.logger.SetType(tp)
}

func (this *AsyncLogger) SetRollingFile(dir, _file string, maxn int32, maxs int64, _u int64) {
this.init()
this.logger.SetRollingFile(dir, _file, maxn, maxs, _u)
}

func (this *AsyncLogger) SetRollingDaily(dir, _file string) {
this.init()
this.logger.SetRollingDaily(dir, _file)
}

func (this *AsyncLogger) SetRollingNormal(dir, _file string) {
this.init()
this.logger.SetRollingNormal(dir, _file)
}

func (this *AsyncLogger) Close() {
if nil != this.logger {
this.logger.Close()
}
}
func (this *AsyncLogger) Println(a ...interface{}) {
if nil != this.logger {
go this.logger.Println(a...)
}
}

func (this *AsyncLogger) Printf(format string, a ...interface{}) {
if nil != this.logger {
go this.logger.Printf(format, a...)
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息