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

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值