Files
go-service/internal/logger/monitor.go

42 lines
739 B
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package logger
import (
"sync"
"time"
)
type Monitor struct {
eventLogger *EventLogger
lastWrite time.Time
mu sync.RWMutex
}
func NewMonitor(eventLogger *EventLogger) *Monitor {
m := &Monitor{
eventLogger: eventLogger,
lastWrite: time.Now(),
}
go m.watchdogLoop()
return m
}
func (m *Monitor) RecordWrite() {
m.mu.Lock()
m.lastWrite = time.Now()
m.mu.Unlock()
}
func (m *Monitor) watchdogLoop() {
ticker := time.NewTicker(1 * time.Minute)
for range ticker.C {
m.mu.RLock()
silence := time.Since(m.lastWrite)
m.mu.RUnlock()
if silence > 10*time.Minute {
m.eventLogger.Event("ТИШИНА_10МИН")
} else if silence > 5*time.Minute {
m.eventLogger.Event("ТИШИНА_5МИН")
}
}
}