From 9c6775c22ca7c7343d3236a383ab6189ecf7b009 Mon Sep 17 00:00:00 2001 From: astaxie Date: Sat, 13 Jun 2015 00:25:21 +0800 Subject: [PATCH] log default use synchro, and support async --- logs/log.go | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/logs/log.go b/logs/log.go index 5f5f1cea..5c94a9d8 100644 --- a/logs/log.go +++ b/logs/log.go @@ -92,6 +92,7 @@ type BeeLogger struct { level int enableFuncCallDepth bool loggerFuncCallDepth int + asynchronous bool msg chan *logMsg outputs map[string]LoggerInterface } @@ -110,7 +111,11 @@ func NewLogger(channellen int64) *BeeLogger { bl.loggerFuncCallDepth = 2 bl.msg = make(chan *logMsg, channellen) bl.outputs = make(map[string]LoggerInterface) - //bl.SetLogger("console", "") // default output to console + return bl +} + +func (bl *BeeLogger) Async() *BeeLogger { + bl.asynchronous = true go bl.startLogger() return bl } @@ -164,7 +169,17 @@ func (bl *BeeLogger) writerMsg(loglevel int, msg string) error { } else { lm.msg = msg } - bl.msg <- lm + if bl.asynchronous { + bl.msg <- lm + } else { + for name, l := range bl.outputs { + err := l.WriteMsg(lm.msg, lm.level) + if err != nil { + fmt.Println("unable to WriteMsg to adapter:", name, err) + return err + } + } + } return nil }