
# Conflicts: # client/admin_api.go # client/control.go # client/proxy/proxy.go # client/service.go # cmd/frpc/sub/root.go # pkg/util/log/log_extend.go # pkg/util/net/kcp.go # pkg/util/net/udp.go # server/group/tcp.go # server/ports/ports.go # server/service.go
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()
|
|
}
|