Add simple debug logging.

This commit is contained in:
2020-12-23 16:28:57 +05:00
parent 935d5d8109
commit 95c8181d2a
10 changed files with 100 additions and 27 deletions

View File

@@ -3,9 +3,9 @@ package memory
import (
"context"
"errors"
"log"
"sync"
"go.dev.pztrn.name/metricator/internal/logger"
"go.dev.pztrn.name/metricator/internal/models"
)
@@ -15,6 +15,7 @@ var ErrMetricNotFound = errors.New("metric not found")
type Storage struct {
ctx context.Context
doneChan chan struct{}
logger *logger.Logger
name string
data map[string]models.Metric
@@ -22,10 +23,11 @@ type Storage struct {
}
// NewStorage creates new in-memory storage to use.
func NewStorage(ctx context.Context, name string) (*Storage, chan struct{}) {
func NewStorage(ctx context.Context, name string, logger *logger.Logger) (*Storage, chan struct{}) {
s := &Storage{
ctx: ctx,
doneChan: make(chan struct{}),
logger: logger,
name: name,
}
s.initialize()
@@ -35,19 +37,27 @@ func NewStorage(ctx context.Context, name string) (*Storage, chan struct{}) {
// Get returns data from storage by key.
func (s *Storage) Get(key string) (models.Metric, error) {
s.logger.Debugln("Retrieving data for", key, "key from storage...")
s.dataMutex.RLock()
defer s.dataMutex.RUnlock()
data, found := s.data[key]
if !found {
s.logger.Infoln("Key", key, "not found in storage!")
return models.NewMetric("", "", "", nil), ErrMetricNotFound
}
s.logger.Debugf("Key %s found: %+v\n", key, data)
return data, nil
}
// GetAsSlice returns all data from storage as slice.
func (s *Storage) GetAsSlice() []models.Metric {
s.logger.Debugln("Returning all stored metrics as slice...")
metrics := make([]models.Metric, 0, len(s.data))
for _, metric := range s.data {
@@ -80,7 +90,7 @@ func (s *Storage) Put(data map[string]models.Metric) {
}
}
log.Println("Put", len(data), "items in", s.name)
s.logger.Debugln("Put", len(data), "items in", s.name)
}
// Start starts asynchronous things if needed.
@@ -89,7 +99,7 @@ func (s *Storage) Start() {
go func() {
<-s.ctx.Done()
log.Println("In-memory storage", s.name, "done")
s.logger.Infoln("In-memory storage", s.name, "done")
s.doneChan <- struct{}{}
}()