go/mqtt/retry/logger.go (48 lines of code) (raw):
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
package retry
import (
"context"
"fmt"
"log/slog"
"time"
"github.com/Azure/iot-operations-sdks/go/internal/log"
)
type logger struct{ log.Logger }
func (l *logger) attempt(
ctx context.Context,
task string,
attempt uint64,
) {
l.Log(ctx, slog.LevelInfo, task,
slog.Uint64("attempt", attempt),
)
}
func (l *logger) retry(
ctx context.Context,
task string,
attempt uint64,
err error,
interval time.Duration,
) {
l.Log(ctx, slog.LevelWarn, fmt.Sprintf("%s retrying", task),
slog.Uint64("attempt", attempt),
slog.String("error", err.Error()),
slog.Duration("after", interval),
)
}
func (l *logger) complete(
ctx context.Context,
task string,
attempt uint64,
err error,
) {
if err != nil {
l.Log(ctx, slog.LevelWarn, fmt.Sprintf("%s failed", task),
slog.Uint64("attempt", attempt),
slog.String("error", err.Error()),
)
} else {
l.Log(ctx, slog.LevelInfo, fmt.Sprintf("%s succeeded", task),
slog.Uint64("attempt", attempt),
)
}
}