refactor: clean up logger and metric initialization flow

This commit is contained in:
yusing
2025-03-29 02:55:26 +08:00
parent 366c89164f
commit 1c001ed9df
6 changed files with 27 additions and 32 deletions

View File

@@ -7,6 +7,7 @@ import (
"net/url"
"os"
"path/filepath"
"sync"
"time"
"github.com/yusing/go-proxy/internal/gperr"
@@ -42,9 +43,11 @@ const (
saveBaseDir = "data/metrics"
)
func init() {
var initDataDirOnce sync.Once
func initDataDir() {
if err := os.MkdirAll(saveBaseDir, 0o755); err != nil {
panic(fmt.Sprintf("failed to create metrics data directory: %s", err))
logging.Error().Err(err).Msg("failed to create metrics data directory")
}
}
@@ -74,6 +77,7 @@ func (p *Poller[T, AggregateT]) load() error {
}
func (p *Poller[T, AggregateT]) save() error {
initDataDirOnce.Do(initDataDir)
entries, err := json.Marshal(p.period)
if err != nil {
return err
@@ -131,16 +135,16 @@ func (p *Poller[T, AggregateT]) pollWithTimeout(ctx context.Context) {
func (p *Poller[T, AggregateT]) Start() {
t := task.RootTask("poller." + p.name)
go func() {
err := p.load()
if err != nil {
if !os.IsNotExist(err) {
logging.Error().Err(err).Msgf("failed to load last metrics data for %s", p.name)
}
} else {
logging.Debug().Msgf("Loaded last metrics data for %s, %d entries", p.name, p.period.Total())
err := p.load()
if err != nil {
if !os.IsNotExist(err) {
logging.Error().Err(err).Msgf("failed to load last metrics data for %s", p.name)
}
} else {
logging.Debug().Msgf("Loaded last metrics data for %s, %d entries", p.name, p.period.Total())
}
go func() {
pollTicker := time.NewTicker(pollInterval)
gatherErrsTicker := time.NewTicker(gatherErrsInterval)
saveTicker := time.NewTicker(saveInterval)

View File

@@ -96,10 +96,6 @@ var allQueries = []string{
var Poller = period.NewPoller("system_info", getSystemInfo, aggregate)
func init() {
Poller.Start()
}
func _() { // check if this behavior is not changed
var _ sensors.Warnings = disk.Warnings{}
}