Adds a few locks

This commit is contained in:
Bruno Carlin 2016-04-28 14:17:23 +02:00
parent e6b3497b2b
commit 4cc1baab95
2 changed files with 15 additions and 1 deletions

View file

@ -4,9 +4,13 @@ import (
"fmt" "fmt"
"log" "log"
"os" "os"
"sync"
) )
type Logger struct { type Logger struct {
// added to avoid concurrent writes
sync.Mutex
name string name string
level Level level Level
backends []Backend backends []Backend
@ -54,6 +58,9 @@ func (l *Logger) AsStdLog(level Level) *log.Logger {
} }
func (l *Logger) Log(level Level, m string) { func (l *Logger) Log(level Level, m string) {
l.Lock()
defer l.Unlock()
r := NewRecord(l.name, level, m) r := NewRecord(l.name, level, m)
for _, backend := range l.backends { for _, backend := range l.backends {
if r.Level >= backend.Level() { if r.Level >= backend.Level() {

View file

@ -4,9 +4,13 @@ import (
"errors" "errors"
"fmt" "fmt"
"strings" "strings"
"sync"
) )
var loggers map[string]*Logger var (
loggers map[string]*Logger
lock sync.Mutex
)
type Level byte type Level byte
@ -38,6 +42,9 @@ func LevelByName(l string) (Level, error) {
type Formatter func(*Record) string type Formatter func(*Record) string
func GetLogger(name string) (l *Logger) { func GetLogger(name string) (l *Logger) {
lock.Lock()
defer lock.Unlock()
if name == "" { if name == "" {
name = "default" name = "default"
} }