34 lines
559 B
Go
34 lines
559 B
Go
package log
|
|
|
|
import (
|
|
"sync"
|
|
"time"
|
|
)
|
|
|
|
var logListeners = make([]LogListener, 0)
|
|
var lock sync.Mutex
|
|
|
|
type LogListener interface {
|
|
Log(log string)
|
|
Location() string
|
|
}
|
|
|
|
func AppendListener(l LogListener) {
|
|
lock.Lock()
|
|
logListeners = append(logListeners, l)
|
|
lock.Unlock()
|
|
}
|
|
|
|
func CallLogListeners(log string) {
|
|
lock.Lock()
|
|
for _, l := range logListeners {
|
|
location, _ := time.LoadLocation(l.Location())
|
|
if location == nil {
|
|
location = time.UTC
|
|
}
|
|
|
|
l.Log(time.Now().In(location).Format("2006/01/02 15:04:05") + ": " + log)
|
|
}
|
|
lock.Unlock()
|
|
}
|