Files
cloud-services/services/jetfire/utils/logging.go

56 lines
1.2 KiB
Go

package utils
import (
"time"
"github.com/fiskerinc/cloud-services/pkg/logger"
"github.com/rs/zerolog"
)
var (
outOfOrderSignalMap = make(map[string]uint)
outOfOrderVINMap = make(map[string]uint)
outOfOrderCount uint = 0
outOfOrderLogDelay = time.Hour
outOfOrderTime = time.Now().UTC()
)
// This function is for aggregating and logging out of order incoming messages
func LogOutOfOrderMsg(signal string, VIN string) {
_, ok := outOfOrderSignalMap[signal]
if !ok {
outOfOrderSignalMap[signal] = 0
}
outOfOrderSignalMap[signal] += 1
_, ok = outOfOrderVINMap[VIN]
if !ok {
outOfOrderVINMap[VIN] = 0
}
outOfOrderVINMap[VIN] += 1
outOfOrderCount += 1
if time.Since(outOfOrderTime) > outOfOrderLogDelay {
signalDict := zerolog.Dict()
for k, v := range outOfOrderSignalMap {
signalDict.Uint(k, v)
}
vinDict := zerolog.Dict()
for k, v := range outOfOrderVINMap {
vinDict.Uint(k, v)
}
logger.Warn().Dict(
"Signals", signalDict,
).Dict(
"VINs", vinDict,
).Msgf("Received Out of Order Data! %d out-of-order messages", outOfOrderCount)
outOfOrderCount = 0
outOfOrderTime = time.Now().UTC()
clear(outOfOrderSignalMap)
clear(outOfOrderVINMap)
}
}