加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 18:09:20 所属栏目:大数据 来源:网络整理
导读:本节工具类对loggor进行了异步封装,优化了日志输出时的线程并发,在高并发的场合适用,但会增加CPU负荷及数据落地时序有一定影响,使用接口无缝兼容loggor工具类 asyncLoggor.go //@description异步日志器,将同步日志器封装为异步//@author chenbintao//@da

本节工具类对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...)
	}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读