golanggohlsrtmpwebrtcmedia-serverobs-studiortcprtmp-proxyrtmp-serverrtprtsprtsp-proxyrtsp-relayrtsp-serversrtstreamingwebrtc-proxy
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
646 B
34 lines
646 B
package logger |
|
|
|
import ( |
|
"sync" |
|
"time" |
|
) |
|
|
|
const ( |
|
minIntervalBetweenWarnings = 1 * time.Second |
|
) |
|
|
|
type limitedLogger struct { |
|
w Writer |
|
mutex sync.Mutex |
|
lastPrinted time.Time |
|
} |
|
|
|
// NewLimitedLogger is a wrapper around a Writer that limits printed messages. |
|
func NewLimitedLogger(w Writer) Writer { |
|
return &limitedLogger{ |
|
w: w, |
|
} |
|
} |
|
|
|
// Log is the main logging function. |
|
func (l *limitedLogger) Log(level Level, format string, args ...interface{}) { |
|
now := time.Now() |
|
l.mutex.Lock() |
|
if now.Sub(l.lastPrinted) >= minIntervalBetweenWarnings { |
|
l.lastPrinted = now |
|
l.w.Log(level, format, args...) |
|
} |
|
l.mutex.Unlock() |
|
}
|
|
|