|
|
@@ -89,8 +89,10 @@ func (l *ChannelledLog) Start() { |
|
|
|
l.closeLogger() |
|
|
|
return |
|
|
|
} |
|
|
|
l.emptyQueue() |
|
|
|
l.loggerProvider.Flush() |
|
|
|
case <-l.close: |
|
|
|
l.emptyQueue() |
|
|
|
l.closeLogger() |
|
|
|
return |
|
|
|
} |
|
|
@@ -111,6 +113,20 @@ func (l *ChannelledLog) LogEvent(event *Event) error { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
func (l *ChannelledLog) emptyQueue() bool { |
|
|
|
for { |
|
|
|
select { |
|
|
|
case event, ok := <-l.queue: |
|
|
|
if !ok { |
|
|
|
return false |
|
|
|
} |
|
|
|
l.loggerProvider.LogEvent(event) |
|
|
|
default: |
|
|
|
return true |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
func (l *ChannelledLog) closeLogger() { |
|
|
|
l.loggerProvider.Flush() |
|
|
|
l.loggerProvider.Close() |
|
|
@@ -345,18 +361,41 @@ func (m *MultiChannelledLog) Start() { |
|
|
|
m.closeLoggers() |
|
|
|
return |
|
|
|
} |
|
|
|
m.emptyQueue() |
|
|
|
m.rwmutex.RLock() |
|
|
|
for _, logger := range m.loggers { |
|
|
|
logger.Flush() |
|
|
|
} |
|
|
|
m.rwmutex.RUnlock() |
|
|
|
case <-m.close: |
|
|
|
m.emptyQueue() |
|
|
|
m.closeLoggers() |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
func (m *MultiChannelledLog) emptyQueue() bool { |
|
|
|
for { |
|
|
|
select { |
|
|
|
case event, ok := <-m.queue: |
|
|
|
if !ok { |
|
|
|
return false |
|
|
|
} |
|
|
|
m.rwmutex.RLock() |
|
|
|
for _, logger := range m.loggers { |
|
|
|
err := logger.LogEvent(event) |
|
|
|
if err != nil { |
|
|
|
fmt.Println(err) |
|
|
|
} |
|
|
|
} |
|
|
|
m.rwmutex.RUnlock() |
|
|
|
default: |
|
|
|
return true |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// LogEvent logs an event to this MultiChannelledLog |
|
|
|
func (m *MultiChannelledLog) LogEvent(event *Event) error { |
|
|
|
select { |