Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/actions/cache-golangci-lint/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ runs:
path: ~/.cache/golangci-lint
key: golangci-lint-${{ runner.os }}-${{ hashFiles('**/go.mod') }}
restore-keys: |
golangci-lint-${{ runner.os }}--
golangci-lint-${{ runner.os }}-
3 changes: 3 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ jobs:
- name: Run tidy
run: make tidy && git diff --exit-code

- name: Run generate
run: make generate && git diff --exit-code

- name: Run lint
run: make lint

Expand Down
8 changes: 6 additions & 2 deletions .goreleaser.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# yaml-language-server: $schema=https://goreleaser.com/static/schema.json
version: 2

project_name: keel
Expand All @@ -9,11 +10,14 @@ builds:
- skip: true

archives:
- format: tar.gz
- formats: [ tar.gz ]
format_overrides:
- goos: windows
format: zip
formats: [ zip ]
files: [ LICENSE, README.md ]

checksum:
name_template: checksums.txt

changelog:
use: github-native
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
[![GoDoc](https://img.shields.io/badge/GoDoc-✓-informational.svg?style=flat-square&logo=go)](https://godoc.org/github.com/foomo/keel)
[![CodeQL](https://github.com/foomo/keel/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/foomo/keel/actions/workflows/github-code-scanning/codeql)
[![Coverage](https://img.shields.io/codecov/c/github/foomo/keel?style=flat-square&logo=github)](https://app.codecov.io/gh/foomo/keel)
[![GoDoc](https://godoc.org/github.com/foomo/keel?status.svg)](https://godoc.org/github.com/foomo/keel)
[![GitHub Stars](https://img.shields.io/github/stars/foomo/keel.svg?style=flat-square&logo=github)](https://github.com/foomo/keel)

<p align="center">
Expand Down
6 changes: 3 additions & 3 deletions closer.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ package keel

import (
"context"
"fmt"

"github.com/foomo/keel/interfaces"
"github.com/foomo/keel/log"
keelsemconv "github.com/foomo/keel/semconv"
"go.uber.org/zap"
)

Expand All @@ -21,7 +21,7 @@ func closeAll(ctx context.Context, l *zap.Logger, closers []any) {

var err error

cl := l.With(log.FName(fmt.Sprintf("%T", closer)))
cl := log.WithAttributes(l, keelsemconv.KeelCloserType(closer))
switch c := closer.(type) {
case interfaces.Closer:
c.Close()
Expand Down Expand Up @@ -58,7 +58,7 @@ func closeAll(ctx context.Context, l *zap.Logger, closers []any) {
}

if err != nil {
cl.Warn("keel closer failed", zap.Error(err))
log.WithError(cl, err).Warn("keel closer failed")
} else {
cl.Debug("keel closer closed")
}
Expand Down
14 changes: 7 additions & 7 deletions examples/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ require (
github.com/pkg/errors v0.9.1
github.com/prometheus/client_golang v1.24.1
go.mongodb.org/mongo-driver/v2 v2.9.1
go.opentelemetry.io/otel v1.46.0
go.opentelemetry.io/otel/metric v1.46.0
go.opentelemetry.io/otel/trace v1.46.0
go.opentelemetry.io/otel v1.47.0
go.opentelemetry.io/otel/metric v1.47.0
go.opentelemetry.io/otel/trace v1.47.0
go.uber.org/zap v1.28.0
)

Expand All @@ -50,7 +50,7 @@ require (
github.com/foomo/gofuncy v0.4.0 // indirect
github.com/foomo/gostandards v0.3.0 // indirect
github.com/foomo/mongo-lock v0.2.0 // indirect
github.com/foomo/opentelemetry-go v0.4.0 // indirect
github.com/foomo/opentelemetry-go v0.5.0 // indirect
github.com/fsnotify/fsnotify v1.10.1 // indirect
github.com/go-logr/logr v1.4.4 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
Expand Down Expand Up @@ -136,10 +136,10 @@ require (
go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.22.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.46.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.46.0 // indirect
go.opentelemetry.io/otel/log v0.22.0 // indirect
go.opentelemetry.io/otel/sdk v1.46.0 // indirect
go.opentelemetry.io/otel/log v1.47.0 // indirect
go.opentelemetry.io/otel/sdk v1.47.0 // indirect
go.opentelemetry.io/otel/sdk/log v0.22.0 // indirect
go.opentelemetry.io/otel/sdk/metric v1.46.0 // indirect
go.opentelemetry.io/otel/sdk/metric v1.47.0 // indirect
go.opentelemetry.io/proto/otlp v1.11.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.yaml.in/yaml/v3 v3.0.5 // indirect
Expand Down
32 changes: 16 additions & 16 deletions examples/go.sum

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 10 additions & 10 deletions examples/persistence/mongo/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,9 @@ func main() {
if err := repo.Insert(context.Background(), &store.Dummy{
Entity: store.NewEntity(newEntity.ID),
}); mongo.IsDuplicateKeyError(err) {
l.Info("OK: expected error", log.FValue(err.Error()))
log.WithError(l, err).Info("OK: expected error")
} else if err != nil {
l.Error("unexpected error", log.FValue(err.Error()))
log.WithError(l, err).Error("unexpected error")
} else {
l.Error("unexpected success")
}
Expand All @@ -90,9 +90,9 @@ func main() {
if err := repo.Upsert(context.Background(), &store.Dummy{
Entity: store.NewEntity(newEntity.ID),
}); mongo.IsDuplicateKeyError(err) {
l.Info("OK: expected error", log.FValue(err.Error()))
log.WithError(l, err).Info("OK: expected error")
} else if err != nil {
l.Error("unexpected error", log.FValue(err.Error()))
log.WithError(l, err).Error("unexpected error")
} else {
l.Error("unexpected success")
}
Expand All @@ -102,9 +102,9 @@ func main() {
if err := repo.UpsertMany(context.Background(), []*store.Dummy{{
Entity: store.NewEntity(newEntity.ID),
}}); mongo.IsDuplicateKeyError(err) {
l.Info("OK: expected error", log.FValue(err.Error()))
log.WithError(l, err).Info("OK: expected error")
} else if err != nil {
l.Error("unexpected error", log.FValue(err.Error()))
log.WithError(l, err).Error("unexpected error")
} else {
l.Error("unexpected success")
}
Expand All @@ -123,9 +123,9 @@ func main() {

// update entity B
if err := repo.Upsert(context.Background(), newEntityB); errors.Is(err, keelpersistence.ErrDirtyWrite) {
l.Info("OK: expected error", log.FValue(err.Error()))
log.WithError(l, err).Info("OK: expected error")
} else if err != nil {
l.Error("unexpected error", log.FValue(err.Error()))
log.WithError(l, err).Error("unexpected error")
} else {
l.Error("unexpected success")
}
Expand All @@ -144,9 +144,9 @@ func main() {
l.Info("Try to upsert many with dirty write")

if err := repo.UpsertMany(context.Background(), []*store.Dummy{newEntityB}); errors.Is(err, keelpersistence.ErrDirtyWrite) {
l.Info("OK: expected error", log.FValue(err.Error()))
log.WithError(l, err).Info("OK: expected error")
} else if err != nil {
l.Error("unexpected error", log.FValue(err.Error()))
log.WithError(l, err).Error("unexpected error")
} else {
l.Error("unexpected success")
}
Expand Down
6 changes: 4 additions & 2 deletions examples/stream/jetstream/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ import (
"github.com/foomo/keel"
"github.com/foomo/keel/log"
"github.com/foomo/keel/net/stream/jetstream"
keelsemconv "github.com/foomo/keel/semconv"
httputils "github.com/foomo/keel/utils/net/http"
semconv "go.opentelemetry.io/otel/semconv/v1.43.0"
)

func main() {
Expand Down Expand Up @@ -71,7 +73,7 @@ func main() {
return
}

l.Info("sent message", log.FValue(msg.Name))
l.Info("sent message", log.Attribute(keelsemconv.Value(msg.Name)))
w.WriteHeader(http.StatusOK)
_, _ = w.Write([]byte("OK"))
})
Expand All @@ -83,7 +85,7 @@ func main() {
return errors.Wrap(err, "failed to unmarshall message data")
}

l.Info("received message", log.FValue(data.Name), log.FMessagingDestination(msg.Subject))
l.Info("received message", log.Attribute(keelsemconv.Value(data.Name)), log.Attribute(semconv.MessagingDestinationName(msg.Subject)))

return nil
})
Expand Down
4 changes: 3 additions & 1 deletion examples/stream/jetstreamraw/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@ import (
"github.com/foomo/keel"
"github.com/foomo/keel/log"
"github.com/foomo/keel/net/stream/jetstream"
keelsemconv "github.com/foomo/keel/semconv"
httputils "github.com/foomo/keel/utils/net/http"
semconv "go.opentelemetry.io/otel/semconv/v1.43.0"
)

func main() {
Expand Down Expand Up @@ -67,7 +69,7 @@ func main() {

// subscribe to the subject
subscription, err := sub.JS().Subscribe(sub.Subject(), func(msg *nats.Msg) {
l.Info("received message", log.FValue(string(msg.Data)), log.FMessagingDestination(msg.Subject))
l.Info("received message", log.Attribute(keelsemconv.Value(string(msg.Data))), log.Attribute(semconv.MessagingDestinationName(msg.Subject)))
}, sub.SubOpts()...)
log.Must(l, err, "failed to subscribe to subject")

Expand Down
32 changes: 16 additions & 16 deletions examples/telemetry/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,9 @@ func main() {

{ // counter
counter, err := meter.Int64Counter(
"a.counter",
metric.WithDescription("Count things"),
"demo.count",
metric.WithDescription("Number of calls to the count endpoint."),
metric.WithUnit("{call}"),
)
log.Must(l, err, "failed to create counter meter")

Expand All @@ -83,8 +84,9 @@ func main() {

{ // up down
upDown, err := meter.Int64UpDownCounter(
"a.updown",
metric.WithDescription("Up down values"),
"demo.level",
metric.WithDescription("Current level raised by the up and lowered by the down endpoint."),
metric.WithUnit("{level}"),
)
log.Must(l, err, "failed to create up down meter")

Expand All @@ -101,26 +103,24 @@ func main() {
}

{ // histogram
histogram, err := meter.Int64Histogram(
"a.histogram",
metric.WithDescription("Up down values"),
metric.WithUnit("ms"),
histogram, err := meter.Float64Histogram(
"demo.request.duration",
metric.WithDescription("Duration of histogram endpoint requests."),
metric.WithUnit("s"),
)
log.Must(l, err, "failed to create up down meter")
log.Must(l, err, "failed to create histogram meter")

svs.HandleFunc("/histogram", func(w http.ResponseWriter, r *http.Request) {
start := time.Now()

time.Sleep(time.Second)
time.Sleep(time.Second + time.Duration(rand.Intn(100))*time.Millisecond)

traceID := trace.SpanContextFromContext(r.Context())
histogram.Record(r.Context(), int64(rand.Int()),
metric.WithAttributes(
attribute.String("key", "value"),
attribute.String("traceID", traceID.TraceID().String()),
),
histogram.Record(r.Context(), time.Since(start).Seconds(),
metric.WithAttributes(attribute.String("key", "value")),
)

traceID := trace.SpanContextFromContext(r.Context())

metricRequestLatency.(prometheus.ExemplarObserver).ObserveWithExemplar(
time.Since(start).Seconds(), prometheus.Labels{"traceID": traceID.TraceID().String()},
)
Expand Down
14 changes: 7 additions & 7 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ require (
github.com/foomo/goflux v0.10.0
github.com/foomo/gofuncy v0.4.0
github.com/foomo/gostandards v0.3.0
github.com/foomo/opentelemetry-go v0.4.0
github.com/foomo/opentelemetry-go v0.5.0
github.com/go-logr/logr v1.4.4
github.com/golang-jwt/jwt/v5 v5.3.1
github.com/google/uuid v1.6.0
Expand All @@ -30,7 +30,7 @@ require (
go.opentelemetry.io/contrib/instrumentation/host v0.71.0
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.71.0
go.opentelemetry.io/contrib/instrumentation/runtime v0.71.0
go.opentelemetry.io/otel v1.46.0
go.opentelemetry.io/otel v1.47.0
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.22.0
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.22.0
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.46.0
Expand All @@ -41,13 +41,13 @@ require (
go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.22.0
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.46.0
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.46.0
go.opentelemetry.io/otel/log v0.22.0
go.opentelemetry.io/otel/log v1.47.0
go.opentelemetry.io/otel/log/logtest v0.22.0
go.opentelemetry.io/otel/metric v1.46.0
go.opentelemetry.io/otel/sdk v1.46.0
go.opentelemetry.io/otel/metric v1.47.0
go.opentelemetry.io/otel/sdk v1.47.0
go.opentelemetry.io/otel/sdk/log v0.22.0
go.opentelemetry.io/otel/sdk/metric v1.46.0
go.opentelemetry.io/otel/trace v1.46.0
go.opentelemetry.io/otel/sdk/metric v1.47.0
go.opentelemetry.io/otel/trace v1.47.0
go.uber.org/goleak v1.3.0
go.uber.org/zap v1.28.0
golang.org/x/crypto v0.57.0
Expand Down
Loading
Loading