Skip to content

Commit

Permalink
use map to store adapters
Browse files Browse the repository at this point in the history
  • Loading branch information
philchia committed Dec 22, 2016
1 parent 588c768 commit 6093107
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 27 deletions.
8 changes: 6 additions & 2 deletions gol.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,12 @@ func SetOption(option LogOption) {
logger.SetOption(option)
}

func AddLogAdapter(a adapter.Adapter) {
logger.AddLogAdapter(a)
func AddLogAdapter(name string, adapter adapter.Adapter) error {
return logger.AddLogAdapter(name, adapter)
}

func RemoveAdapter(name string) error {
return logger.RemoveAdapter(name)
}

func Flush() {
Expand Down
20 changes: 16 additions & 4 deletions gollog.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,16 @@ import (

"sync/atomic"

"errors"

"github.com/philchia/gol/adapter"
"github.com/philchia/gol/internal"
)

type gollog struct {
level LogLevel
option LogOption
adapters []adapter.Adapter
adapters map[string]adapter.Adapter
logChan chan string
doneChan chan struct{}
exitingFlag uint64
Expand Down Expand Up @@ -223,10 +225,20 @@ func (l *gollog) SetOption(option LogOption) {
l.option = option
}

func (l *gollog) AddLogAdapter(a adapter.Adapter) {
if a != nil {
l.adapters = append(l.adapters, a)
func (l *gollog) AddLogAdapter(name string, adapter adapter.Adapter) error {
if _, ok := l.adapters[name]; ok {
return errors.New("Adapter already exists")
}
l.adapters[name] = adapter
return nil
}

func (l *gollog) RemoveAdapter(name string) error {
if _, ok := l.adapters[name]; !ok {
return errors.New("Adapter not exists")
}
delete(l.adapters, name)
return nil
}

func (l *gollog) Flush() {
Expand Down
39 changes: 20 additions & 19 deletions gollog_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ func Test_gollog_msgPump(t *testing.T) {
type fields struct {
level LogLevel
option LogOption
adapters []adapter.Adapter
adapters map[string]adapter.Adapter
logChan chan string
}
tests := []struct {
Expand All @@ -37,7 +37,7 @@ func Test_gollog_put(t *testing.T) {
type fields struct {
level LogLevel
option LogOption
adapters []adapter.Adapter
adapters map[string]adapter.Adapter
logChan chan string
}
type args struct {
Expand Down Expand Up @@ -86,7 +86,7 @@ func Test_gollog_generatePrefix(t *testing.T) {
type fields struct {
level LogLevel
option LogOption
adapters []adapter.Adapter
adapters map[string]adapter.Adapter
logChan chan string
}
type args struct {
Expand Down Expand Up @@ -119,7 +119,7 @@ func Test_gollog_generateLog(t *testing.T) {
type fields struct {
level LogLevel
option LogOption
adapters []adapter.Adapter
adapters map[string]adapter.Adapter
logChan chan string
}
type args struct {
Expand Down Expand Up @@ -154,7 +154,7 @@ func Test_gollog_Debug(t *testing.T) {
type fields struct {
level LogLevel
option LogOption
adapters []adapter.Adapter
adapters map[string]adapter.Adapter
logChan chan string
}
type args struct {
Expand Down Expand Up @@ -184,7 +184,7 @@ func Test_gollog_Debugf(t *testing.T) {
type fields struct {
level LogLevel
option LogOption
adapters []adapter.Adapter
adapters map[string]adapter.Adapter
logChan chan string
}
type args struct {
Expand Down Expand Up @@ -215,7 +215,7 @@ func Test_gollog_Info(t *testing.T) {
type fields struct {
level LogLevel
option LogOption
adapters []adapter.Adapter
adapters map[string]adapter.Adapter
logChan chan string
}
type args struct {
Expand Down Expand Up @@ -245,7 +245,7 @@ func Test_gollog_Infof(t *testing.T) {
type fields struct {
level LogLevel
option LogOption
adapters []adapter.Adapter
adapters map[string]adapter.Adapter
logChan chan string
}
type args struct {
Expand Down Expand Up @@ -276,7 +276,7 @@ func Test_gollog_Warn(t *testing.T) {
type fields struct {
level LogLevel
option LogOption
adapters []adapter.Adapter
adapters map[string]adapter.Adapter
logChan chan string
}
type args struct {
Expand Down Expand Up @@ -306,7 +306,7 @@ func Test_gollog_Warnf(t *testing.T) {
type fields struct {
level LogLevel
option LogOption
adapters []adapter.Adapter
adapters map[string]adapter.Adapter
logChan chan string
}
type args struct {
Expand Down Expand Up @@ -337,7 +337,7 @@ func Test_gollog_Error(t *testing.T) {
type fields struct {
level LogLevel
option LogOption
adapters []adapter.Adapter
adapters map[string]adapter.Adapter
logChan chan string
}
type args struct {
Expand Down Expand Up @@ -367,7 +367,7 @@ func Test_gollog_Errorf(t *testing.T) {
type fields struct {
level LogLevel
option LogOption
adapters []adapter.Adapter
adapters map[string]adapter.Adapter
logChan chan string
}
type args struct {
Expand Down Expand Up @@ -398,7 +398,7 @@ func Test_gollog_Critical(t *testing.T) {
type fields struct {
level LogLevel
option LogOption
adapters []adapter.Adapter
adapters map[string]adapter.Adapter
logChan chan string
}
type args struct {
Expand Down Expand Up @@ -428,7 +428,7 @@ func Test_gollog_Criticalf(t *testing.T) {
type fields struct {
level LogLevel
option LogOption
adapters []adapter.Adapter
adapters map[string]adapter.Adapter
logChan chan string
}
type args struct {
Expand Down Expand Up @@ -459,7 +459,7 @@ func Test_gollog_SetLevel(t *testing.T) {
type fields struct {
level LogLevel
option LogOption
adapters []adapter.Adapter
adapters map[string]adapter.Adapter
logChan chan string
}
type args struct {
Expand Down Expand Up @@ -489,7 +489,7 @@ func Test_gollog_SetOption(t *testing.T) {
type fields struct {
level LogLevel
option LogOption
adapters []adapter.Adapter
adapters map[string]adapter.Adapter
logChan chan string
}
type args struct {
Expand Down Expand Up @@ -519,11 +519,12 @@ func Test_gollog_AddLogAdapter(t *testing.T) {
type fields struct {
level LogLevel
option LogOption
adapters []adapter.Adapter
adapters map[string]adapter.Adapter
logChan chan string
}
type args struct {
a adapter.Adapter
a adapter.Adapter
name string
}
tests := []struct {
name string
Expand All @@ -540,7 +541,7 @@ func Test_gollog_AddLogAdapter(t *testing.T) {
adapters: tt.fields.adapters,
logChan: tt.fields.logChan,
}
l.AddLogAdapter(tt.args.a)
l.AddLogAdapter(tt.args.name, tt.args.a)
})
}
}
8 changes: 6 additions & 2 deletions logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,21 +24,25 @@ type Logger interface {

SetLevel(LogLevel)
SetOption(LogOption)
AddLogAdapter(adapter.Adapter)

AddLogAdapter(name string, adapter adapter.Adapter) error
RemoveAdapter(name string) error
Flush()
}

const CONSOLELOGGER = "console"

// NewLogger create a Logger
func NewLogger(level LogLevel) Logger {
logger := &gollog{
level: level,
option: LstdFlags,
logChan: make(chan string, 1024),
doneChan: make(chan struct{}),
adapters: make(map[string]adapter.Adapter, 1),
}

logger.AddLogAdapter(console.NewAdapter())
logger.AddLogAdapter(CONSOLELOGGER, console.NewAdapter())

go logger.msgPump()
return logger
Expand Down

0 comments on commit 6093107

Please sign in to comment.