From 4cc1baab9581ac9223802b4d7607198f9f9ae07a Mon Sep 17 00:00:00 2001 From: Bruno Carlin Date: Thu, 28 Apr 2016 14:17:23 +0200 Subject: [PATCH] Adds a few locks --- logger.go | 7 +++++++ logging.go | 9 ++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/logger.go b/logger.go index fccc391..9ffee73 100644 --- a/logger.go +++ b/logger.go @@ -4,9 +4,13 @@ import ( "fmt" "log" "os" + "sync" ) type Logger struct { + // added to avoid concurrent writes + sync.Mutex + name string level Level backends []Backend @@ -54,6 +58,9 @@ func (l *Logger) AsStdLog(level Level) *log.Logger { } func (l *Logger) Log(level Level, m string) { + l.Lock() + defer l.Unlock() + r := NewRecord(l.name, level, m) for _, backend := range l.backends { if r.Level >= backend.Level() { diff --git a/logging.go b/logging.go index daff311..3d0c603 100644 --- a/logging.go +++ b/logging.go @@ -4,9 +4,13 @@ import ( "errors" "fmt" "strings" + "sync" ) -var loggers map[string]*Logger +var ( + loggers map[string]*Logger + lock sync.Mutex +) type Level byte @@ -38,6 +42,9 @@ func LevelByName(l string) (Level, error) { type Formatter func(*Record) string func GetLogger(name string) (l *Logger) { + lock.Lock() + defer lock.Unlock() + if name == "" { name = "default" }