mirror of
https://github.com/absmach/supermq.git
synced 2026-06-23 07:30:25 +00:00
MG-234 - Improve Logging (#255)
Signed-off-by: Musilah <nataleigh.nk@gmail.co> Signed-off-by: Musilah <nataleigh.nk@gmail.com> Co-authored-by: Musilah <nataleigh.nk@gmail.co> Co-authored-by: Dušan Borovčanin <dusan.borovcanin@abstractmachines.fr>
This commit is contained in:
@@ -51,6 +51,12 @@ jobs:
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v4
|
||||
with:
|
||||
go-version: 1.21.x
|
||||
cache-dependency-path: "go.sum"
|
||||
|
||||
- name: Check for changes in specific paths
|
||||
uses: dorny/paths-filter@v2
|
||||
id: changes
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ linters-settings:
|
||||
no-unaliased: true
|
||||
no-extra-aliases: false
|
||||
alias:
|
||||
- pkg: github.com/mainflux/callhome/pkg/client
|
||||
- pkg: github.com/absmach/callhome/pkg/client
|
||||
alias: chclient
|
||||
- pkg: github.com/absmach/magistrala/logger
|
||||
alias: mglog
|
||||
|
||||
@@ -4,16 +4,17 @@
|
||||
package domains
|
||||
|
||||
import (
|
||||
"log/slog"
|
||||
|
||||
"github.com/absmach/magistrala/auth"
|
||||
"github.com/absmach/magistrala/internal/api"
|
||||
"github.com/absmach/magistrala/internal/apiutil"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/go-chi/chi/v5"
|
||||
kithttp "github.com/go-kit/kit/transport/http"
|
||||
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
|
||||
)
|
||||
|
||||
func MakeHandler(svc auth.Service, mux *chi.Mux, logger mglog.Logger) *chi.Mux {
|
||||
func MakeHandler(svc auth.Service, mux *chi.Mux, logger *slog.Logger) *chi.Mux {
|
||||
opts := []kithttp.ServerOption{
|
||||
kithttp.ServerErrorEncoder(apiutil.LoggingErrorEncoder(logger, api.EncodeError)),
|
||||
}
|
||||
|
||||
@@ -78,8 +78,7 @@ func newService() (auth.Service, *mocks.KeyRepository) {
|
||||
}
|
||||
|
||||
func newServer(svc auth.Service) *httptest.Server {
|
||||
logger := mglog.NewMock()
|
||||
mux := httpapi.MakeHandler(svc, logger, "")
|
||||
mux := httpapi.MakeHandler(svc, mglog.NewMock(), "")
|
||||
return httptest.NewServer(mux)
|
||||
}
|
||||
|
||||
|
||||
@@ -6,13 +6,13 @@ package keys
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"log/slog"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/auth"
|
||||
"github.com/absmach/magistrala/internal/apiutil"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
"github.com/go-chi/chi/v5"
|
||||
kithttp "github.com/go-kit/kit/transport/http"
|
||||
@@ -21,7 +21,7 @@ import (
|
||||
const contentType = "application/json"
|
||||
|
||||
// MakeHandler returns a HTTP handler for API endpoints.
|
||||
func MakeHandler(svc auth.Service, mux *chi.Mux, logger mglog.Logger) *chi.Mux {
|
||||
func MakeHandler(svc auth.Service, mux *chi.Mux, logger *slog.Logger) *chi.Mux {
|
||||
opts := []kithttp.ServerOption{
|
||||
kithttp.ServerErrorEncoder(apiutil.LoggingErrorEncoder(logger, encodeError)),
|
||||
}
|
||||
|
||||
@@ -3,19 +3,19 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"log/slog"
|
||||
"net/http"
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/auth"
|
||||
"github.com/absmach/magistrala/auth/api/http/domains"
|
||||
"github.com/absmach/magistrala/auth/api/http/keys"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/go-chi/chi/v5"
|
||||
"github.com/prometheus/client_golang/prometheus/promhttp"
|
||||
)
|
||||
|
||||
// MakeHandler returns a HTTP handler for API endpoints.
|
||||
func MakeHandler(svc auth.Service, logger mglog.Logger, instanceID string) http.Handler {
|
||||
func MakeHandler(svc auth.Service, logger *slog.Logger, instanceID string) http.Handler {
|
||||
mux := chi.NewRouter()
|
||||
|
||||
mux = keys.MakeHandler(svc, mux, logger)
|
||||
|
||||
+3
-3
@@ -8,21 +8,21 @@ package api
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"time"
|
||||
|
||||
"github.com/absmach/magistrala/auth"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
)
|
||||
|
||||
var _ auth.Service = (*loggingMiddleware)(nil)
|
||||
|
||||
type loggingMiddleware struct {
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
svc auth.Service
|
||||
}
|
||||
|
||||
// LoggingMiddleware adds logging facilities to the core service.
|
||||
func LoggingMiddleware(svc auth.Service, logger mglog.Logger) auth.Service {
|
||||
func LoggingMiddleware(svc auth.Service, logger *slog.Logger) auth.Service {
|
||||
return &loggingMiddleware{logger, svc}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,9 +7,9 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"log/slog"
|
||||
|
||||
"github.com/absmach/magistrala/auth"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
svcerr "github.com/absmach/magistrala/pkg/errors/service"
|
||||
v1 "github.com/authzed/authzed-go/proto/authzed/api/v1"
|
||||
@@ -33,10 +33,10 @@ var (
|
||||
type policyAgent struct {
|
||||
client *authzed.ClientWithExperimental
|
||||
permissionClient v1.PermissionsServiceClient
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
}
|
||||
|
||||
func NewPolicyAgent(client *authzed.ClientWithExperimental, logger mglog.Logger) auth.PolicyAgent {
|
||||
func NewPolicyAgent(client *authzed.ClientWithExperimental, logger *slog.Logger) auth.PolicyAgent {
|
||||
return &policyAgent{
|
||||
client: client,
|
||||
permissionClient: client.PermissionsServiceClient,
|
||||
|
||||
@@ -8,21 +8,21 @@ package api
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"time"
|
||||
|
||||
"github.com/absmach/magistrala/bootstrap"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
)
|
||||
|
||||
var _ bootstrap.Service = (*loggingMiddleware)(nil)
|
||||
|
||||
type loggingMiddleware struct {
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
svc bootstrap.Service
|
||||
}
|
||||
|
||||
// LoggingMiddleware adds logging facilities to the bootstrap service.
|
||||
func LoggingMiddleware(svc bootstrap.Service, logger mglog.Logger) bootstrap.Service {
|
||||
func LoggingMiddleware(svc bootstrap.Service, logger *slog.Logger) bootstrap.Service {
|
||||
return &loggingMiddleware{logger, svc}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ package api
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"log/slog"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strings"
|
||||
@@ -13,7 +14,6 @@ import (
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/bootstrap"
|
||||
"github.com/absmach/magistrala/internal/apiutil"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
svcerr "github.com/absmach/magistrala/pkg/errors/service"
|
||||
"github.com/go-chi/chi/v5"
|
||||
@@ -38,7 +38,7 @@ var (
|
||||
)
|
||||
|
||||
// MakeHandler returns a HTTP handler for API endpoints.
|
||||
func MakeHandler(svc bootstrap.Service, reader bootstrap.ConfigReader, logger mglog.Logger, instanceID string) http.Handler {
|
||||
func MakeHandler(svc bootstrap.Service, reader bootstrap.ConfigReader, logger *slog.Logger, instanceID string) http.Handler {
|
||||
opts := []kithttp.ServerOption{
|
||||
kithttp.ServerErrorEncoder(apiutil.LoggingErrorEncoder(logger, encodeError)),
|
||||
}
|
||||
|
||||
@@ -8,12 +8,12 @@ import (
|
||||
"database/sql"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/absmach/magistrala/bootstrap"
|
||||
"github.com/absmach/magistrala/internal/postgres"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/clients"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
"github.com/jackc/pgerrcode"
|
||||
@@ -37,12 +37,12 @@ var _ bootstrap.ConfigRepository = (*configRepository)(nil)
|
||||
|
||||
type configRepository struct {
|
||||
db postgres.Database
|
||||
log mglog.Logger
|
||||
log *slog.Logger
|
||||
}
|
||||
|
||||
// NewConfigRepository instantiates a PostgreSQL implementation of config
|
||||
// repository.
|
||||
func NewConfigRepository(db postgres.Database, log mglog.Logger) bootstrap.ConfigRepository {
|
||||
func NewConfigRepository(db postgres.Database, log *slog.Logger) bootstrap.ConfigRepository {
|
||||
return &configRepository{db: db, log: log}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
testLog, _ = mglog.New(os.Stdout, mglog.Info.String())
|
||||
testLog, _ = mglog.New(os.Stdout, "info")
|
||||
db *sqlx.DB
|
||||
)
|
||||
|
||||
|
||||
@@ -8,21 +8,21 @@ package api
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"time"
|
||||
|
||||
"github.com/absmach/magistrala/certs"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
)
|
||||
|
||||
var _ certs.Service = (*loggingMiddleware)(nil)
|
||||
|
||||
type loggingMiddleware struct {
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
svc certs.Service
|
||||
}
|
||||
|
||||
// LoggingMiddleware adds logging facilities to the bootstrap service.
|
||||
func LoggingMiddleware(svc certs.Service, logger mglog.Logger) certs.Service {
|
||||
func LoggingMiddleware(svc certs.Service, logger *slog.Logger) certs.Service {
|
||||
return &loggingMiddleware{logger, svc}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,12 +6,12 @@ package api
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"log/slog"
|
||||
"net/http"
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/certs"
|
||||
"github.com/absmach/magistrala/internal/apiutil"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
svcerr "github.com/absmach/magistrala/pkg/errors/service"
|
||||
"github.com/go-chi/chi/v5"
|
||||
@@ -29,7 +29,7 @@ const (
|
||||
)
|
||||
|
||||
// MakeHandler returns a HTTP handler for API endpoints.
|
||||
func MakeHandler(svc certs.Service, logger mglog.Logger, instanceID string) http.Handler {
|
||||
func MakeHandler(svc certs.Service, logger *slog.Logger, instanceID string) http.Handler {
|
||||
opts := []kithttp.ServerOption{
|
||||
kithttp.ServerErrorEncoder(apiutil.LoggingErrorEncoder(logger, encodeError)),
|
||||
}
|
||||
|
||||
@@ -7,11 +7,11 @@ import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"time"
|
||||
|
||||
"github.com/absmach/magistrala/certs"
|
||||
"github.com/absmach/magistrala/internal/postgres"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
"github.com/jackc/pgerrcode"
|
||||
"github.com/jackc/pgx/v5/pgconn"
|
||||
@@ -29,12 +29,12 @@ type Cert struct {
|
||||
|
||||
type certsRepository struct {
|
||||
db postgres.Database
|
||||
log mglog.Logger
|
||||
log *slog.Logger
|
||||
}
|
||||
|
||||
// NewRepository instantiates a PostgreSQL implementation of certs
|
||||
// repository.
|
||||
func NewRepository(db postgres.Database, log mglog.Logger) certs.Repository {
|
||||
func NewRepository(db postgres.Database, log *slog.Logger) certs.Repository {
|
||||
return &certsRepository{db: db, log: log}
|
||||
}
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
testLog, _ = mglog.New(os.Stdout, mglog.Info.String())
|
||||
testLog, _ = mglog.New(os.Stdout, "info")
|
||||
db *sqlx.DB
|
||||
)
|
||||
|
||||
|
||||
+5
-4
@@ -7,10 +7,12 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"net/url"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/auth"
|
||||
api "github.com/absmach/magistrala/auth/api"
|
||||
@@ -34,7 +36,6 @@ import (
|
||||
"github.com/authzed/grpcutil"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/jmoiron/sqlx"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
"golang.org/x/sync/errgroup"
|
||||
"google.golang.org/grpc"
|
||||
@@ -79,7 +80,7 @@ func main() {
|
||||
|
||||
logger, err := mglog.New(os.Stdout, cfg.LogLevel)
|
||||
if err != nil {
|
||||
logger.Fatal(fmt.Sprintf("failed to init logger: %s", err.Error()))
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
@@ -95,7 +96,7 @@ func main() {
|
||||
|
||||
dbConfig := pgclient.Config{Name: defDB}
|
||||
if err := env.ParseWithOptions(&dbConfig, env.Options{Prefix: envPrefixDB}); err != nil {
|
||||
logger.Fatal(err.Error())
|
||||
logger.Error(err.Error())
|
||||
}
|
||||
|
||||
db, err := pgclient.Setup(dbConfig, *apostgres.Migration())
|
||||
@@ -200,7 +201,7 @@ func initSchema(ctx context.Context, client *authzed.ClientWithExperimental, sch
|
||||
return nil
|
||||
}
|
||||
|
||||
func newService(db *sqlx.DB, tracer trace.Tracer, cfg config, dbConfig pgclient.Config, logger mglog.Logger, spicedbClient *authzed.ClientWithExperimental) auth.Service {
|
||||
func newService(db *sqlx.DB, tracer trace.Tracer, cfg config, dbConfig pgclient.Config, logger *slog.Logger, spicedbClient *authzed.ClientWithExperimental) auth.Service {
|
||||
database := postgres.NewDatabase(db, dbConfig, tracer)
|
||||
keysRepo := apostgres.New(database)
|
||||
domainsRepo := apostgres.NewDomainRepository(database)
|
||||
|
||||
@@ -8,9 +8,11 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/bootstrap"
|
||||
"github.com/absmach/magistrala/bootstrap/api"
|
||||
@@ -31,7 +33,6 @@ import (
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/jmoiron/sqlx"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
@@ -71,7 +72,7 @@ func main() {
|
||||
|
||||
logger, err := mglog.New(os.Stdout, cfg.LogLevel)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to init logger: %s", err)
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
@@ -88,7 +89,7 @@ func main() {
|
||||
// Create new postgres client
|
||||
dbConfig := pgclient.Config{Name: defDB}
|
||||
if err := env.ParseWithOptions(&dbConfig, env.Options{Prefix: envPrefixDB}); err != nil {
|
||||
logger.Fatal(err.Error())
|
||||
logger.Error(err.Error())
|
||||
}
|
||||
db, err := pgclient.Setup(dbConfig, *bootstrappg.Migration())
|
||||
if err != nil {
|
||||
@@ -167,7 +168,7 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
func newService(ctx context.Context, authClient magistrala.AuthServiceClient, db *sqlx.DB, tracer trace.Tracer, logger mglog.Logger, cfg config, dbConfig pgclient.Config) (bootstrap.Service, error) {
|
||||
func newService(ctx context.Context, authClient magistrala.AuthServiceClient, db *sqlx.DB, tracer trace.Tracer, logger *slog.Logger, cfg config, dbConfig pgclient.Config) (bootstrap.Service, error) {
|
||||
database := postgres.NewDatabase(db, dbConfig, tracer)
|
||||
|
||||
repoConfig := bootstrappg.NewConfigRepository(database, logger)
|
||||
@@ -194,7 +195,7 @@ func newService(ctx context.Context, authClient magistrala.AuthServiceClient, db
|
||||
return svc, nil
|
||||
}
|
||||
|
||||
func subscribeToThingsES(ctx context.Context, svc bootstrap.Service, cfg config, logger mglog.Logger) error {
|
||||
func subscribeToThingsES(ctx context.Context, svc bootstrap.Service, cfg config, logger *slog.Logger) error {
|
||||
subscriber, err := store.NewSubscriber(ctx, cfg.ESURL, thingsStream, cfg.ESConsumerName, logger)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -8,8 +8,10 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"os"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
cassandraclient "github.com/absmach/magistrala/internal/clients/cassandra"
|
||||
@@ -23,7 +25,6 @@ import (
|
||||
"github.com/absmach/magistrala/readers/cassandra"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/gocql/gocql"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
|
||||
@@ -54,7 +55,7 @@ func main() {
|
||||
|
||||
logger, err := mglog.New(os.Stdout, cfg.LogLevel)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to init logger: %s", err)
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
@@ -142,7 +143,7 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
func newService(csdSession *gocql.Session, logger mglog.Logger) readers.MessageRepository {
|
||||
func newService(csdSession *gocql.Session, logger *slog.Logger) readers.MessageRepository {
|
||||
repo := cassandra.New(csdSession)
|
||||
repo = api.LoggingMiddleware(repo, logger)
|
||||
counter, latency := internal.MakeMetrics("cassandra", "message_reader")
|
||||
|
||||
@@ -8,9 +8,11 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/consumers"
|
||||
consumertracing "github.com/absmach/magistrala/consumers/tracing"
|
||||
@@ -27,7 +29,6 @@ import (
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/gocql/gocql"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
|
||||
@@ -60,7 +61,7 @@ func main() {
|
||||
|
||||
logger, err := mglog.New(os.Stdout, cfg.LogLevel)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to init logger: %s", err)
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
@@ -145,7 +146,7 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
func newService(session *gocql.Session, logger mglog.Logger) consumers.BlockingConsumer {
|
||||
func newService(session *gocql.Session, logger *slog.Logger) consumers.BlockingConsumer {
|
||||
repo := cassandra.New(session)
|
||||
repo = api.LoggingMiddleware(repo, logger)
|
||||
counter, latency := internal.MakeMetrics("cassandra", "message_writer")
|
||||
|
||||
+5
-4
@@ -8,9 +8,11 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/certs"
|
||||
"github.com/absmach/magistrala/certs/api"
|
||||
@@ -29,7 +31,6 @@ import (
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/jmoiron/sqlx"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
@@ -73,7 +74,7 @@ func main() {
|
||||
|
||||
logger, err := mglog.New(os.Stdout, cfg.LogLevel)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to init logger: %s", err)
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
@@ -102,7 +103,7 @@ func main() {
|
||||
|
||||
dbConfig := pgclient.Config{Name: defDB}
|
||||
if err := env.ParseWithOptions(&dbConfig, env.Options{Prefix: envPrefixDB}); err != nil {
|
||||
logger.Fatal(err.Error())
|
||||
logger.Error(err.Error())
|
||||
}
|
||||
db, err := pgclient.Setup(dbConfig, *certspg.Migration())
|
||||
if err != nil {
|
||||
@@ -170,7 +171,7 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
func newService(authClient magistrala.AuthServiceClient, db *sqlx.DB, tracer trace.Tracer, logger mglog.Logger, cfg config, dbConfig pgclient.Config, pkiAgent vault.Agent) certs.Service {
|
||||
func newService(authClient magistrala.AuthServiceClient, db *sqlx.DB, tracer trace.Tracer, logger *slog.Logger, cfg config, dbConfig pgclient.Config, pkiAgent vault.Agent) certs.Service {
|
||||
database := postgres.NewDatabase(db, dbConfig, tracer)
|
||||
certsRepo := certspg.NewRepository(database, logger)
|
||||
config := mgsdk.Config{
|
||||
|
||||
+2
-2
@@ -11,6 +11,7 @@ import (
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/coap"
|
||||
"github.com/absmach/magistrala/coap/api"
|
||||
@@ -26,7 +27,6 @@ import (
|
||||
brokerstracing "github.com/absmach/magistrala/pkg/messaging/brokers/tracing"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
|
||||
@@ -59,7 +59,7 @@ func main() {
|
||||
|
||||
logger, err := mglog.New(os.Stdout, cfg.LogLevel)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to init logger: %s", err)
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
|
||||
+5
-4
@@ -8,10 +8,12 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
adapter "github.com/absmach/magistrala/http"
|
||||
"github.com/absmach/magistrala/http/api"
|
||||
@@ -29,7 +31,6 @@ import (
|
||||
mproxy "github.com/absmach/mproxy/pkg/http"
|
||||
"github.com/absmach/mproxy/pkg/session"
|
||||
"github.com/caarlos0/env/v10"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
@@ -63,7 +64,7 @@ func main() {
|
||||
|
||||
logger, err := mglog.New(os.Stdout, cfg.LogLevel)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to init logger: %s", err)
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
@@ -150,7 +151,7 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
func newService(pub messaging.Publisher, tc magistrala.AuthzServiceClient, logger mglog.Logger, tracer trace.Tracer) session.Handler {
|
||||
func newService(pub messaging.Publisher, tc magistrala.AuthzServiceClient, logger *slog.Logger, tracer trace.Tracer) session.Handler {
|
||||
svc := adapter.NewHandler(pub, logger, tc)
|
||||
svc = handler.NewTracing(tracer, svc)
|
||||
svc = handler.LoggingMiddleware(svc, logger)
|
||||
@@ -159,7 +160,7 @@ func newService(pub messaging.Publisher, tc magistrala.AuthzServiceClient, logge
|
||||
return svc
|
||||
}
|
||||
|
||||
func proxyHTTP(ctx context.Context, cfg server.Config, logger mglog.Logger, sessionHandler session.Handler) error {
|
||||
func proxyHTTP(ctx context.Context, cfg server.Config, logger *slog.Logger, sessionHandler session.Handler) error {
|
||||
address := fmt.Sprintf("%s:%s", "", cfg.Port)
|
||||
target := fmt.Sprintf("%s:%s", targetHTTPHost, targetHTTPPort)
|
||||
mp, err := mproxy.NewProxy(address, target, sessionHandler, logger)
|
||||
|
||||
@@ -8,8 +8,10 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"os"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
influxdbclient "github.com/absmach/magistrala/internal/clients/influxdb"
|
||||
@@ -23,7 +25,6 @@ import (
|
||||
"github.com/absmach/magistrala/readers/influxdb"
|
||||
"github.com/caarlos0/env/v10"
|
||||
influxdb2 "github.com/influxdata/influxdb-client-go/v2"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
|
||||
@@ -53,7 +54,7 @@ func main() {
|
||||
|
||||
logger, err := mglog.New(os.Stdout, cfg.LogLevel)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to init logger: %s", err)
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
@@ -150,7 +151,7 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
func newService(client influxdb2.Client, repocfg influxdb.RepoConfig, logger mglog.Logger) readers.MessageRepository {
|
||||
func newService(client influxdb2.Client, repocfg influxdb.RepoConfig, logger *slog.Logger) readers.MessageRepository {
|
||||
repo := influxdb.New(client, repocfg)
|
||||
repo = api.LoggingMiddleware(repo, logger)
|
||||
counter, latency := internal.MakeMetrics("influxdb", "message_reader")
|
||||
|
||||
@@ -8,9 +8,11 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/consumers"
|
||||
consumertracing "github.com/absmach/magistrala/consumers/tracing"
|
||||
@@ -25,7 +27,6 @@ import (
|
||||
brokerstracing "github.com/absmach/magistrala/pkg/messaging/brokers/tracing"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
|
||||
@@ -57,7 +58,7 @@ func main() {
|
||||
|
||||
logger, err := mglog.New(os.Stdout, cfg.LogLevel)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to init logger: %s", err)
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
@@ -125,7 +126,7 @@ func main() {
|
||||
repo = consumertracing.NewAsync(tracer, repo, httpServerConfig)
|
||||
|
||||
// Start consuming and logging errors.
|
||||
go func(log mglog.Logger) {
|
||||
go func(log *slog.Logger) {
|
||||
for err := range repo.Errors() {
|
||||
if err != nil {
|
||||
log.Error(err.Error())
|
||||
|
||||
@@ -8,9 +8,11 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
"github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
@@ -28,7 +30,6 @@ import (
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/jmoiron/sqlx"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
@@ -63,8 +64,9 @@ func main() {
|
||||
|
||||
logger, err := mglog.New(os.Stdout, cfg.LogLevel)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to init logger: %s", err)
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
defer mglog.ExitWithError(&exitCode)
|
||||
|
||||
@@ -152,7 +154,7 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
func newService(db *sqlx.DB, dbConfig clientspg.Config, authClient magistrala.AuthServiceClient, tracer trace.Tracer, conf config, logger mglog.Logger) (invitations.Service, error) {
|
||||
func newService(db *sqlx.DB, dbConfig clientspg.Config, authClient magistrala.AuthServiceClient, tracer trace.Tracer, conf config, logger *slog.Logger) (invitations.Service, error) {
|
||||
database := postgres.NewDatabase(db, dbConfig, tracer)
|
||||
repo := invitationspg.NewRepository(database)
|
||||
|
||||
|
||||
+8
-7
@@ -8,10 +8,12 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"net/url"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
"github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
@@ -31,7 +33,6 @@ import (
|
||||
"github.com/caarlos0/env/v10"
|
||||
mqttpaho "github.com/eclipse/paho.mqtt.golang"
|
||||
"github.com/go-redis/redis/v8"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
|
||||
@@ -74,7 +75,7 @@ func main() {
|
||||
|
||||
logger, err := mglog.New(os.Stdout, cfg.LogLevel)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to init logger: %s", err)
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
@@ -166,7 +167,7 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
func connectToMQTTBroker(burl, user, password string, timeout time.Duration, logger mglog.Logger) (mqttpaho.Client, error) {
|
||||
func connectToMQTTBroker(burl, user, password string, timeout time.Duration, logger *slog.Logger) (mqttpaho.Client, error) {
|
||||
opts := mqttpaho.NewClientOptions()
|
||||
opts.AddBroker(burl)
|
||||
opts.SetUsername(user)
|
||||
@@ -187,7 +188,7 @@ func connectToMQTTBroker(burl, user, password string, timeout time.Duration, log
|
||||
return client, nil
|
||||
}
|
||||
|
||||
func subscribeToLoRaBroker(svc lora.Service, mc mqttpaho.Client, timeout time.Duration, topic string, logger mglog.Logger) error {
|
||||
func subscribeToLoRaBroker(svc lora.Service, mc mqttpaho.Client, timeout time.Duration, topic string, logger *slog.Logger) error {
|
||||
mqttBroker := mqtt.NewBroker(svc, mc, timeout, logger)
|
||||
logger.Info("Subscribed to Lora MQTT broker")
|
||||
if err := mqttBroker.Subscribe(topic); err != nil {
|
||||
@@ -196,7 +197,7 @@ func subscribeToLoRaBroker(svc lora.Service, mc mqttpaho.Client, timeout time.Du
|
||||
return nil
|
||||
}
|
||||
|
||||
func subscribeToThingsES(ctx context.Context, svc lora.Service, cfg config, logger mglog.Logger) error {
|
||||
func subscribeToThingsES(ctx context.Context, svc lora.Service, cfg config, logger *slog.Logger) error {
|
||||
subscriber, err := store.NewSubscriber(ctx, cfg.ESURL, thingsStream, cfg.ESConsumerName, logger)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -209,12 +210,12 @@ func subscribeToThingsES(ctx context.Context, svc lora.Service, cfg config, logg
|
||||
return subscriber.Subscribe(ctx, handler)
|
||||
}
|
||||
|
||||
func newRouteMapRepository(client *redis.Client, prefix string, logger mglog.Logger) lora.RouteMapRepository {
|
||||
func newRouteMapRepository(client *redis.Client, prefix string, logger *slog.Logger) lora.RouteMapRepository {
|
||||
logger.Info(fmt.Sprintf("Connected to %s Redis Route-map", prefix))
|
||||
return events.NewRouteMapRepository(client, prefix)
|
||||
}
|
||||
|
||||
func newService(pub messaging.Publisher, rmConn *redis.Client, thingsRMPrefix, channelsRMPrefix, connsRMPrefix string, logger mglog.Logger) lora.Service {
|
||||
func newService(pub messaging.Publisher, rmConn *redis.Client, thingsRMPrefix, channelsRMPrefix, connsRMPrefix string, logger *slog.Logger) lora.Service {
|
||||
thingsRM := newRouteMapRepository(rmConn, thingsRMPrefix, logger)
|
||||
chansRM := newRouteMapRepository(rmConn, channelsRMPrefix, logger)
|
||||
connsRM := newRouteMapRepository(rmConn, connsRMPrefix, logger)
|
||||
|
||||
@@ -8,8 +8,10 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"os"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
mongoclient "github.com/absmach/magistrala/internal/clients/mongo"
|
||||
@@ -22,7 +24,6 @@ import (
|
||||
"github.com/absmach/magistrala/readers/api"
|
||||
"github.com/absmach/magistrala/readers/mongodb"
|
||||
"github.com/caarlos0/env/v10"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
@@ -53,7 +54,7 @@ func main() {
|
||||
|
||||
logger, err := mglog.New(os.Stdout, cfg.LogLevel)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to init logger: %s", err)
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
@@ -85,7 +86,7 @@ func main() {
|
||||
|
||||
ac, acHandler, err := auth.Setup(authConfig)
|
||||
if err != nil {
|
||||
logger.Fatal(err.Error())
|
||||
logger.Error(err.Error())
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
@@ -136,7 +137,7 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
func newService(db *mongo.Database, logger mglog.Logger) readers.MessageRepository {
|
||||
func newService(db *mongo.Database, logger *slog.Logger) readers.MessageRepository {
|
||||
repo := mongodb.New(db)
|
||||
repo = api.LoggingMiddleware(repo, logger)
|
||||
counter, latency := internal.MakeMetrics("mongodb", "message_reader")
|
||||
|
||||
@@ -8,9 +8,11 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/consumers"
|
||||
consumertracing "github.com/absmach/magistrala/consumers/tracing"
|
||||
@@ -26,7 +28,6 @@ import (
|
||||
brokerstracing "github.com/absmach/magistrala/pkg/messaging/brokers/tracing"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
@@ -59,7 +60,7 @@ func main() {
|
||||
|
||||
logger, err := mglog.New(os.Stdout, cfg.LogLevel)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to init logger: %s", err)
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
@@ -138,7 +139,7 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
func newService(db *mongo.Database, logger mglog.Logger) consumers.BlockingConsumer {
|
||||
func newService(db *mongo.Database, logger *slog.Logger) consumers.BlockingConsumer {
|
||||
repo := mongodb.New(db)
|
||||
repo = api.LoggingMiddleware(repo, logger)
|
||||
counter, latency := internal.MakeMetrics("mongodb", "message_writer")
|
||||
|
||||
+11
-9
@@ -9,6 +9,7 @@ import (
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"log/slog"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"os"
|
||||
@@ -16,6 +17,7 @@ import (
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
@@ -35,7 +37,6 @@ import (
|
||||
"github.com/absmach/mproxy/pkg/session"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/cenkalti/backoff/v4"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
|
||||
@@ -76,7 +77,7 @@ func main() {
|
||||
|
||||
logger, err := mglog.New(os.Stdout, cfg.LogLevel)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to init logger: %s", err)
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
@@ -187,14 +188,15 @@ func main() {
|
||||
go chc.CallHome(ctx)
|
||||
}
|
||||
|
||||
var interceptor session.Interceptor
|
||||
logger.Info(fmt.Sprintf("Starting MQTT proxy on port %s", cfg.MQTTPort))
|
||||
g.Go(func() error {
|
||||
return proxyMQTT(ctx, cfg, logger, h)
|
||||
return proxyMQTT(ctx, cfg, logger, h, interceptor)
|
||||
})
|
||||
|
||||
logger.Info(fmt.Sprintf("Starting MQTT over WS proxy on port %s", cfg.HTTPPort))
|
||||
g.Go(func() error {
|
||||
return proxyWS(ctx, cfg, logger, h)
|
||||
return proxyWS(ctx, cfg, logger, h, interceptor)
|
||||
})
|
||||
|
||||
g.Go(func() error {
|
||||
@@ -206,10 +208,10 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
func proxyMQTT(ctx context.Context, cfg config, logger mglog.Logger, sessionHandler session.Handler) error {
|
||||
func proxyMQTT(ctx context.Context, cfg config, logger *slog.Logger, sessionHandler session.Handler, interceptor session.Interceptor) error {
|
||||
address := fmt.Sprintf(":%s", cfg.MQTTPort)
|
||||
target := fmt.Sprintf("%s:%s", cfg.MQTTTargetHost, cfg.MQTTTargetPort)
|
||||
mproxy := mp.New(address, target, sessionHandler, logger)
|
||||
mproxy := mp.New(address, target, sessionHandler, interceptor, logger)
|
||||
|
||||
errCh := make(chan error)
|
||||
go func() {
|
||||
@@ -225,9 +227,9 @@ func proxyMQTT(ctx context.Context, cfg config, logger mglog.Logger, sessionHand
|
||||
}
|
||||
}
|
||||
|
||||
func proxyWS(ctx context.Context, cfg config, logger mglog.Logger, sessionHandler session.Handler) error {
|
||||
func proxyWS(ctx context.Context, cfg config, logger *slog.Logger, sessionHandler session.Handler, interceptor session.Interceptor) error {
|
||||
target := fmt.Sprintf("%s:%s", cfg.HTTPTargetHost, cfg.HTTPTargetPort)
|
||||
wp := websocket.New(target, cfg.HTTPTargetPath, "ws", sessionHandler, logger)
|
||||
wp := websocket.New(target, cfg.HTTPTargetPath, "ws", sessionHandler, interceptor, logger)
|
||||
http.Handle("/mqtt", wp.Handler())
|
||||
|
||||
errCh := make(chan error)
|
||||
@@ -263,7 +265,7 @@ func healthcheck(cfg config) func() error {
|
||||
}
|
||||
}
|
||||
|
||||
func stopSignalHandler(ctx context.Context, cancel context.CancelFunc, logger mglog.Logger) error {
|
||||
func stopSignalHandler(ctx context.Context, cancel context.CancelFunc, logger *slog.Logger) error {
|
||||
c := make(chan os.Signal, 2)
|
||||
signal.Notify(c, syscall.SIGINT, syscall.SIGABRT)
|
||||
select {
|
||||
|
||||
+7
-6
@@ -8,9 +8,11 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
@@ -29,7 +31,6 @@ import (
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/go-redis/redis/v8"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
|
||||
@@ -73,7 +74,7 @@ func main() {
|
||||
|
||||
logger, err := mglog.New(os.Stdout, cfg.LogLevel)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to init logger: %s", err)
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
@@ -161,7 +162,7 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
func subscribeToStoredSubs(ctx context.Context, sub opcua.Subscriber, cfg opcua.Config, logger mglog.Logger) {
|
||||
func subscribeToStoredSubs(ctx context.Context, sub opcua.Subscriber, cfg opcua.Config, logger *slog.Logger) {
|
||||
// Get all stored subscriptions
|
||||
nodes, err := db.ReadAll()
|
||||
if err != nil {
|
||||
@@ -179,7 +180,7 @@ func subscribeToStoredSubs(ctx context.Context, sub opcua.Subscriber, cfg opcua.
|
||||
}
|
||||
}
|
||||
|
||||
func subscribeToThingsES(ctx context.Context, svc opcua.Service, cfg config, logger mglog.Logger) error {
|
||||
func subscribeToThingsES(ctx context.Context, svc opcua.Service, cfg config, logger *slog.Logger) error {
|
||||
subscriber, err := store.NewSubscriber(ctx, cfg.ESURL, thingsStream, cfg.ESConsumerName, logger)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -192,12 +193,12 @@ func subscribeToThingsES(ctx context.Context, svc opcua.Service, cfg config, log
|
||||
return subscriber.Subscribe(ctx, handler)
|
||||
}
|
||||
|
||||
func newRouteMapRepositoy(client *redis.Client, prefix string, logger mglog.Logger) opcua.RouteMapRepository {
|
||||
func newRouteMapRepositoy(client *redis.Client, prefix string, logger *slog.Logger) opcua.RouteMapRepository {
|
||||
logger.Info(fmt.Sprintf("Connected to %s Redis Route-map", prefix))
|
||||
return events.NewRouteMapRepository(client, prefix)
|
||||
}
|
||||
|
||||
func newService(sub opcua.Subscriber, browser opcua.Browser, thingRM, chanRM, connRM opcua.RouteMapRepository, opcuaConfig opcua.Config, logger mglog.Logger) opcua.Service {
|
||||
func newService(sub opcua.Subscriber, browser opcua.Browser, thingRM, chanRM, connRM opcua.RouteMapRepository, opcuaConfig opcua.Config, logger *slog.Logger) opcua.Service {
|
||||
svc := opcua.New(sub, browser, thingRM, chanRM, connRM, opcuaConfig, logger)
|
||||
svc = api.LoggingMiddleware(svc, logger)
|
||||
counter, latency := internal.MakeMetrics("opc_ua_adapter", "api")
|
||||
|
||||
@@ -8,8 +8,10 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"os"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
pgclient "github.com/absmach/magistrala/internal/clients/postgres"
|
||||
@@ -23,7 +25,6 @@ import (
|
||||
"github.com/absmach/magistrala/readers/postgres"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/jmoiron/sqlx"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
|
||||
@@ -54,7 +55,7 @@ func main() {
|
||||
|
||||
logger, err := mglog.New(os.Stdout, cfg.LogLevel)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to init logger: %s", err)
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
@@ -144,7 +145,7 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
func newService(db *sqlx.DB, logger mglog.Logger) readers.MessageRepository {
|
||||
func newService(db *sqlx.DB, logger *slog.Logger) readers.MessageRepository {
|
||||
svc := postgres.New(db)
|
||||
svc = api.LoggingMiddleware(svc, logger)
|
||||
counter, latency := internal.MakeMetrics("postgres", "message_reader")
|
||||
|
||||
@@ -8,9 +8,11 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/consumers"
|
||||
consumertracing "github.com/absmach/magistrala/consumers/tracing"
|
||||
@@ -27,7 +29,6 @@ import (
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/jmoiron/sqlx"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
|
||||
@@ -60,7 +61,7 @@ func main() {
|
||||
|
||||
logger, err := mglog.New(os.Stdout, cfg.LogLevel)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to init logger: %s", err)
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
@@ -89,7 +90,7 @@ func main() {
|
||||
}
|
||||
db, err := pgclient.Setup(dbConfig, *writerpg.Migration())
|
||||
if err != nil {
|
||||
logger.Fatal(err.Error())
|
||||
logger.Error(err.Error())
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
@@ -144,7 +145,7 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
func newService(db *sqlx.DB, logger mglog.Logger) consumers.BlockingConsumer {
|
||||
func newService(db *sqlx.DB, logger *slog.Logger) consumers.BlockingConsumer {
|
||||
svc := writerpg.New(db)
|
||||
svc = api.LoggingMiddleware(svc, logger)
|
||||
counter, latency := internal.MakeMetrics("postgres", "message_writer")
|
||||
|
||||
@@ -12,6 +12,7 @@ import (
|
||||
"os"
|
||||
"reflect"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
@@ -24,7 +25,6 @@ import (
|
||||
"github.com/absmach/magistrala/provision"
|
||||
"github.com/absmach/magistrala/provision/api"
|
||||
"github.com/caarlos0/env/v10"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
|
||||
@@ -50,7 +50,7 @@ func main() {
|
||||
|
||||
logger, err := mglog.New(os.Stdout, cfg.Server.LogLevel)
|
||||
if err != nil {
|
||||
log.Fatalf(err.Error())
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
|
||||
@@ -8,9 +8,11 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/consumers"
|
||||
"github.com/absmach/magistrala/consumers/notifiers"
|
||||
@@ -31,7 +33,6 @@ import (
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/jmoiron/sqlx"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
@@ -67,7 +68,7 @@ func main() {
|
||||
|
||||
logger, err := mglog.New(os.Stdout, cfg.LogLevel)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to init logger: %s", err)
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
@@ -89,7 +90,7 @@ func main() {
|
||||
}
|
||||
db, err := pgclient.Setup(dbConfig, *notifierpg.Migration())
|
||||
if err != nil {
|
||||
logger.Fatal(err.Error())
|
||||
logger.Error(err.Error())
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
@@ -172,7 +173,7 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
func newService(db *sqlx.DB, tracer trace.Tracer, authClient magistrala.AuthServiceClient, c config, sc mgsmpp.Config, logger mglog.Logger) notifiers.Service {
|
||||
func newService(db *sqlx.DB, tracer trace.Tracer, authClient magistrala.AuthServiceClient, c config, sc mgsmpp.Config, logger *slog.Logger) notifiers.Service {
|
||||
database := notifierpg.NewDatabase(db, tracer)
|
||||
repo := tracing.New(tracer, notifierpg.New(database))
|
||||
idp := ulid.New()
|
||||
|
||||
@@ -8,9 +8,11 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/consumers"
|
||||
"github.com/absmach/magistrala/consumers/notifiers"
|
||||
@@ -32,7 +34,6 @@ import (
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/jmoiron/sqlx"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
@@ -68,7 +69,7 @@ func main() {
|
||||
|
||||
logger, err := mglog.New(os.Stdout, cfg.LogLevel)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to init logger: %s", err)
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
@@ -90,7 +91,7 @@ func main() {
|
||||
}
|
||||
db, err := pgclient.Setup(dbConfig, *notifierpg.Migration())
|
||||
if err != nil {
|
||||
logger.Fatal(err.Error())
|
||||
logger.Error(err.Error())
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
@@ -182,7 +183,7 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
func newService(db *sqlx.DB, tracer trace.Tracer, authClient magistrala.AuthServiceClient, c config, ec email.Config, logger mglog.Logger) (notifiers.Service, error) {
|
||||
func newService(db *sqlx.DB, tracer trace.Tracer, authClient magistrala.AuthServiceClient, c config, ec email.Config, logger *slog.Logger) (notifiers.Service, error) {
|
||||
database := notifierpg.NewDatabase(db, tracer)
|
||||
repo := tracing.New(tracer, notifierpg.New(database))
|
||||
idp := ulid.New()
|
||||
|
||||
+5
-3
@@ -8,10 +8,12 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"net/url"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
@@ -43,7 +45,6 @@ import (
|
||||
"github.com/go-chi/chi/v5"
|
||||
"github.com/go-redis/redis/v8"
|
||||
"github.com/jmoiron/sqlx"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
"golang.org/x/sync/errgroup"
|
||||
"google.golang.org/grpc"
|
||||
@@ -86,9 +87,10 @@ func main() {
|
||||
log.Fatalf("failed to load %s configuration : %s", svcName, err)
|
||||
}
|
||||
|
||||
var logger *slog.Logger
|
||||
logger, err := mglog.New(os.Stdout, cfg.LogLevel)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to init logger: %s", err)
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
@@ -218,7 +220,7 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
func newService(ctx context.Context, db *sqlx.DB, dbConfig pgclient.Config, authClient magistrala.AuthServiceClient, cacheClient *redis.Client, keyDuration time.Duration, esURL string, tracer trace.Tracer, logger mglog.Logger) (things.Service, groups.Service, error) {
|
||||
func newService(ctx context.Context, db *sqlx.DB, dbConfig pgclient.Config, authClient magistrala.AuthServiceClient, cacheClient *redis.Client, keyDuration time.Duration, esURL string, tracer trace.Tracer, logger *slog.Logger) (things.Service, groups.Service, error) {
|
||||
database := postgres.NewDatabase(db, dbConfig, tracer)
|
||||
cRepo := thingspg.NewRepository(database)
|
||||
gRepo := gpostgres.New(database)
|
||||
|
||||
@@ -8,8 +8,10 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"os"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
pgclient "github.com/absmach/magistrala/internal/clients/postgres"
|
||||
@@ -23,7 +25,6 @@ import (
|
||||
"github.com/absmach/magistrala/readers/timescale"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/jmoiron/sqlx"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
|
||||
@@ -54,7 +55,7 @@ func main() {
|
||||
|
||||
logger, err := mglog.New(os.Stdout, cfg.LogLevel)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to init logger: %s", err)
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
@@ -142,7 +143,7 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
func newService(db *sqlx.DB, logger mglog.Logger) readers.MessageRepository {
|
||||
func newService(db *sqlx.DB, logger *slog.Logger) readers.MessageRepository {
|
||||
svc := timescale.New(db)
|
||||
svc = api.LoggingMiddleware(svc, logger)
|
||||
counter, latency := internal.MakeMetrics("timescale", "message_reader")
|
||||
|
||||
@@ -8,9 +8,11 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/consumers"
|
||||
consumertracing "github.com/absmach/magistrala/consumers/tracing"
|
||||
@@ -27,7 +29,6 @@ import (
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/jmoiron/sqlx"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
|
||||
@@ -60,7 +61,7 @@ func main() {
|
||||
|
||||
logger, err := mglog.New(os.Stdout, cfg.LogLevel)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
@@ -146,7 +147,7 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
func newService(db *sqlx.DB, logger mglog.Logger) consumers.BlockingConsumer {
|
||||
func newService(db *sqlx.DB, logger *slog.Logger) consumers.BlockingConsumer {
|
||||
svc := timescale.New(db)
|
||||
svc = api.LoggingMiddleware(svc, logger)
|
||||
counter, latency := internal.MakeMetrics("timescale", "message_writer")
|
||||
|
||||
+6
-5
@@ -8,9 +8,11 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
@@ -33,7 +35,6 @@ import (
|
||||
"github.com/absmach/magistrala/twins/tracing"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/go-redis/redis/v8"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
"golang.org/x/sync/errgroup"
|
||||
@@ -72,7 +73,7 @@ func main() {
|
||||
|
||||
logger, err := mglog.New(os.Stdout, cfg.LogLevel)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to init logger: %s", err)
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
@@ -180,7 +181,7 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
func newService(ctx context.Context, id string, ps messaging.PubSub, cfg config, users magistrala.AuthServiceClient, tracer trace.Tracer, db *mongo.Database, cacheclient *redis.Client, logger mglog.Logger) (twins.Service, error) {
|
||||
func newService(ctx context.Context, id string, ps messaging.PubSub, cfg config, users magistrala.AuthServiceClient, tracer trace.Tracer, db *mongo.Database, cacheclient *redis.Client, logger *slog.Logger) (twins.Service, error) {
|
||||
twinRepo := twmongodb.NewTwinRepository(db)
|
||||
twinRepo = tracing.TwinRepositoryMiddleware(tracer, twinRepo)
|
||||
|
||||
@@ -209,13 +210,13 @@ func newService(ctx context.Context, id string, ps messaging.PubSub, cfg config,
|
||||
Handler: handle(ctx, logger, cfg.ChannelID, svc),
|
||||
}
|
||||
if err = ps.Subscribe(ctx, subCfg); err != nil {
|
||||
logger.Fatal(err.Error())
|
||||
logger.Error(err.Error())
|
||||
}
|
||||
|
||||
return svc, nil
|
||||
}
|
||||
|
||||
func handle(ctx context.Context, logger mglog.Logger, chanID string, svc twins.Service) handlerFunc {
|
||||
func handle(ctx context.Context, logger *slog.Logger, chanID string, svc twins.Service) handlerFunc {
|
||||
return func(msg *messaging.Message) error {
|
||||
if msg.GetChannel() == chanID {
|
||||
return nil
|
||||
|
||||
+4
-3
@@ -8,11 +8,13 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"net/url"
|
||||
"os"
|
||||
"regexp"
|
||||
"time"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
authSvc "github.com/absmach/magistrala/auth"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
@@ -43,7 +45,6 @@ import (
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/go-chi/chi/v5"
|
||||
"github.com/jmoiron/sqlx"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
@@ -90,7 +91,7 @@ func main() {
|
||||
|
||||
logger, err := mglog.New(os.Stdout, cfg.LogLevel)
|
||||
if err != nil {
|
||||
logger.Fatal(fmt.Sprintf("failed to init logger: %s", err.Error()))
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
@@ -192,7 +193,7 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
func newService(ctx context.Context, authClient magistrala.AuthServiceClient, db *sqlx.DB, dbConfig pgclient.Config, tracer trace.Tracer, c config, ec email.Config, logger mglog.Logger) (users.Service, groups.Service, error) {
|
||||
func newService(ctx context.Context, authClient magistrala.AuthServiceClient, db *sqlx.DB, dbConfig pgclient.Config, tracer trace.Tracer, c config, ec email.Config, logger *slog.Logger) (users.Service, groups.Service, error) {
|
||||
database := postgres.NewDatabase(db, dbConfig, tracer)
|
||||
cRepo := clientspg.NewRepository(database)
|
||||
gRepo := gpostgres.New(database)
|
||||
|
||||
+5
-4
@@ -8,9 +8,11 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
@@ -28,7 +30,6 @@ import (
|
||||
"github.com/absmach/mproxy/pkg/session"
|
||||
"github.com/absmach/mproxy/pkg/websockets"
|
||||
"github.com/caarlos0/env/v10"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
@@ -62,7 +63,7 @@ func main() {
|
||||
|
||||
logger, err := mglog.New(os.Stdout, cfg.LogLevel)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to init logger: %s", err)
|
||||
log.Fatalf("failed to init logger: %s", err.Error())
|
||||
}
|
||||
|
||||
var exitCode int
|
||||
@@ -153,7 +154,7 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
func newService(tc magistrala.AuthzServiceClient, nps messaging.PubSub, logger mglog.Logger, tracer trace.Tracer) ws.Service {
|
||||
func newService(tc magistrala.AuthzServiceClient, nps messaging.PubSub, logger *slog.Logger, tracer trace.Tracer) ws.Service {
|
||||
svc := ws.New(tc, nps)
|
||||
svc = tracing.New(tracer, svc)
|
||||
svc = api.LoggingMiddleware(svc, logger)
|
||||
@@ -162,7 +163,7 @@ func newService(tc magistrala.AuthzServiceClient, nps messaging.PubSub, logger m
|
||||
return svc
|
||||
}
|
||||
|
||||
func proxyWS(ctx context.Context, hostConfig, targetConfig server.Config, logger mglog.Logger, handler session.Handler) error {
|
||||
func proxyWS(ctx context.Context, hostConfig, targetConfig server.Config, logger *slog.Logger, handler session.Handler) error {
|
||||
target := fmt.Sprintf("ws://%s:%s", targetConfig.Host, targetConfig.Port)
|
||||
address := fmt.Sprintf("%s:%s", hostConfig.Host, hostConfig.Port)
|
||||
wp, err := websockets.NewProxy(address, target, logger, handler)
|
||||
|
||||
+3
-3
@@ -8,22 +8,22 @@ package api
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"time"
|
||||
|
||||
"github.com/absmach/magistrala/coap"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/messaging"
|
||||
)
|
||||
|
||||
var _ coap.Service = (*loggingMiddleware)(nil)
|
||||
|
||||
type loggingMiddleware struct {
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
svc coap.Service
|
||||
}
|
||||
|
||||
// LoggingMiddleware adds logging facilities to the adapter.
|
||||
func LoggingMiddleware(svc coap.Service, logger mglog.Logger) coap.Service {
|
||||
func LoggingMiddleware(svc coap.Service, logger *slog.Logger) coap.Service {
|
||||
return &loggingMiddleware{logger, svc}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"log/slog"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"regexp"
|
||||
@@ -15,7 +16,6 @@ import (
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/coap"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
"github.com/absmach/magistrala/pkg/messaging"
|
||||
"github.com/go-chi/chi/v5"
|
||||
@@ -44,7 +44,7 @@ var (
|
||||
)
|
||||
|
||||
var (
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
service coap.Service
|
||||
)
|
||||
|
||||
@@ -58,7 +58,7 @@ func MakeHandler(instanceID string) http.Handler {
|
||||
}
|
||||
|
||||
// MakeCoAPHandler creates handler for CoAP messages.
|
||||
func MakeCoAPHandler(svc coap.Service, l mglog.Logger) mux.HandlerFunc {
|
||||
func MakeCoAPHandler(svc coap.Service, l *slog.Logger) mux.HandlerFunc {
|
||||
logger = l
|
||||
service = svc
|
||||
|
||||
|
||||
+3
-3
@@ -7,9 +7,9 @@ import (
|
||||
"bytes"
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"sync/atomic"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
"github.com/absmach/magistrala/pkg/messaging"
|
||||
"github.com/plgd-dev/go-coap/v2/message"
|
||||
@@ -39,11 +39,11 @@ type client struct {
|
||||
client mux.Client
|
||||
token message.Token
|
||||
observe uint32
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
}
|
||||
|
||||
// NewClient instantiates a new Observer.
|
||||
func NewClient(c mux.Client, tkn message.Token, l mglog.Logger) Client {
|
||||
func NewClient(c mux.Client, tkn message.Token, l *slog.Logger) Client {
|
||||
return &client{
|
||||
client: c,
|
||||
token: tkn,
|
||||
|
||||
@@ -6,11 +6,11 @@ package consumers
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/absmach/magistrala/internal/apiutil"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
"github.com/absmach/magistrala/pkg/messaging"
|
||||
"github.com/absmach/magistrala/pkg/messaging/brokers"
|
||||
@@ -33,7 +33,7 @@ var (
|
||||
// Start method starts consuming messages received from Message broker.
|
||||
// This method transforms messages to SenML format before
|
||||
// using MessageRepository to store them.
|
||||
func Start(ctx context.Context, id string, sub messaging.Subscriber, consumer interface{}, configPath string, logger mglog.Logger) error {
|
||||
func Start(ctx context.Context, id string, sub messaging.Subscriber, consumer interface{}, configPath string, logger *slog.Logger) error {
|
||||
cfg, err := loadConfig(configPath)
|
||||
if err != nil {
|
||||
logger.Warn(fmt.Sprintf("Failed to load consumer config: %s", err))
|
||||
@@ -143,7 +143,7 @@ func loadConfig(configPath string) (config, error) {
|
||||
return cfg, nil
|
||||
}
|
||||
|
||||
func makeTransformer(cfg transformerConfig, logger mglog.Logger) transformers.Transformer {
|
||||
func makeTransformer(cfg transformerConfig, logger *slog.Logger) transformers.Transformer {
|
||||
switch strings.ToUpper(cfg.Format) {
|
||||
case "SENML":
|
||||
logger.Info("Using SenML transformer")
|
||||
|
||||
@@ -8,21 +8,21 @@ package api
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"time"
|
||||
|
||||
"github.com/absmach/magistrala/consumers/notifiers"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
)
|
||||
|
||||
var _ notifiers.Service = (*loggingMiddleware)(nil)
|
||||
|
||||
type loggingMiddleware struct {
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
svc notifiers.Service
|
||||
}
|
||||
|
||||
// LoggingMiddleware adds logging facilities to the core service.
|
||||
func LoggingMiddleware(svc notifiers.Service, logger mglog.Logger) notifiers.Service {
|
||||
func LoggingMiddleware(svc notifiers.Service, logger *slog.Logger) notifiers.Service {
|
||||
return &loggingMiddleware{logger, svc}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,13 +6,13 @@ package api
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"log/slog"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/consumers/notifiers"
|
||||
"github.com/absmach/magistrala/internal/apiutil"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
svcerr "github.com/absmach/magistrala/pkg/errors/service"
|
||||
"github.com/go-chi/chi/v5"
|
||||
@@ -32,7 +32,7 @@ const (
|
||||
)
|
||||
|
||||
// MakeHandler returns a HTTP handler for API endpoints.
|
||||
func MakeHandler(svc notifiers.Service, logger mglog.Logger, instanceID string) http.Handler {
|
||||
func MakeHandler(svc notifiers.Service, logger *slog.Logger, instanceID string) http.Handler {
|
||||
opts := []kithttp.ServerOption{
|
||||
kithttp.ServerErrorEncoder(apiutil.LoggingErrorEncoder(logger, encodeError)),
|
||||
}
|
||||
|
||||
@@ -8,21 +8,21 @@ package api
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"time"
|
||||
|
||||
"github.com/absmach/magistrala/consumers"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
)
|
||||
|
||||
var _ consumers.BlockingConsumer = (*loggingMiddleware)(nil)
|
||||
|
||||
type loggingMiddleware struct {
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
consumer consumers.BlockingConsumer
|
||||
}
|
||||
|
||||
// LoggingMiddleware adds logging facilities to the adapter.
|
||||
func LoggingMiddleware(consumer consumers.BlockingConsumer, logger mglog.Logger) consumers.BlockingConsumer {
|
||||
func LoggingMiddleware(consumer consumers.BlockingConsumer, logger *slog.Logger) consumers.BlockingConsumer {
|
||||
return &loggingMiddleware{
|
||||
logger: logger,
|
||||
consumer: consumer,
|
||||
|
||||
@@ -14,7 +14,7 @@ import (
|
||||
"github.com/ory/dockertest/v3"
|
||||
)
|
||||
|
||||
var logger, _ = mglog.New(os.Stdout, mglog.Info.String())
|
||||
var logger, _ = mglog.New(os.Stdout, "info")
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
pool, err := dockertest.NewPool("")
|
||||
@@ -46,7 +46,7 @@ func TestMain(m *testing.M) {
|
||||
|
||||
return nil
|
||||
}); err != nil {
|
||||
logger.Fatal(fmt.Sprintf("Could not connect to docker: %s", err))
|
||||
logger.Error(fmt.Sprintf("Could not connect to docker: %s", err))
|
||||
}
|
||||
|
||||
code := m.Run()
|
||||
|
||||
@@ -23,7 +23,7 @@ import (
|
||||
const valueFields = 5
|
||||
|
||||
var (
|
||||
testLog, _ = mglog.New(os.Stdout, mglog.Info.String())
|
||||
testLog, _ = mglog.New(os.Stdout, "info")
|
||||
streamsSize = 250
|
||||
rowCountSenml = fmt.Sprintf(`from(bucket: "%s")
|
||||
|> range(start: -1h, stop: 1h)
|
||||
|
||||
@@ -25,7 +25,7 @@ import (
|
||||
var (
|
||||
port string
|
||||
addr string
|
||||
testLog, _ = mglog.New(os.Stdout, mglog.Info.String())
|
||||
testLog, _ = mglog.New(os.Stdout, "info")
|
||||
testDB = "test"
|
||||
collection = "messages"
|
||||
msgsNum = 100
|
||||
|
||||
@@ -4,7 +4,8 @@ go 1.21
|
||||
|
||||
require (
|
||||
github.com/0x6flab/namegenerator v1.1.0
|
||||
github.com/absmach/mproxy v0.3.1-0.20231221215510-0ffbc4fc2337
|
||||
github.com/absmach/callhome v0.0.0-20240117170159-c5f5cccd21fd
|
||||
github.com/absmach/mproxy v0.4.2
|
||||
github.com/absmach/senml v1.0.5
|
||||
github.com/authzed/authzed-go v0.10.1
|
||||
github.com/authzed/grpcutil v0.0.0-20230908193239-4286bb1d6403
|
||||
@@ -16,13 +17,12 @@ require (
|
||||
github.com/fiorix/go-smpp v0.0.0-20210403173735-2894b96e70ba
|
||||
github.com/go-chi/chi/v5 v5.0.10
|
||||
github.com/go-kit/kit v0.13.0
|
||||
github.com/go-kit/log v0.2.1
|
||||
github.com/go-redis/redis/v8 v8.11.5
|
||||
github.com/gocql/gocql v1.6.0
|
||||
github.com/gofrs/uuid v4.4.0+incompatible
|
||||
github.com/gookit/color v1.5.4
|
||||
github.com/gopcua/opcua v0.1.6
|
||||
github.com/gorilla/websocket v1.5.0
|
||||
github.com/gorilla/websocket v1.5.1
|
||||
github.com/hashicorp/vault/api v1.10.0
|
||||
github.com/hokaccha/go-prettyjson v0.0.0-20211117102719-0474bc63780f
|
||||
github.com/influxdata/influxdb-client-go/v2 v2.12.3
|
||||
@@ -32,7 +32,6 @@ require (
|
||||
github.com/jackc/pgx/v5 v5.4.3
|
||||
github.com/jmoiron/sqlx v1.3.5
|
||||
github.com/lestrrat-go/jwx/v2 v2.0.16
|
||||
github.com/mainflux/callhome v0.0.0-20230920140432-33c5663382ce
|
||||
github.com/mitchellh/mapstructure v1.5.0
|
||||
github.com/nats-io/nats.go v1.31.0
|
||||
github.com/oklog/ulid/v2 v2.1.0
|
||||
@@ -53,9 +52,9 @@ require (
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.20.0
|
||||
go.opentelemetry.io/otel/sdk v1.20.0
|
||||
go.opentelemetry.io/otel/trace v1.20.0
|
||||
golang.org/x/crypto v0.17.0
|
||||
golang.org/x/net v0.17.0
|
||||
golang.org/x/sync v0.4.0
|
||||
golang.org/x/crypto v0.18.0
|
||||
golang.org/x/net v0.20.0
|
||||
golang.org/x/sync v0.6.0
|
||||
gonum.org/v1/gonum v0.14.0
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405
|
||||
google.golang.org/grpc v1.59.0
|
||||
@@ -76,6 +75,7 @@ require (
|
||||
github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect
|
||||
github.com/aymerick/douceur v0.2.0 // indirect
|
||||
github.com/beorn7/perks v1.0.1 // indirect
|
||||
github.com/bitly/go-hostpool v0.1.0 // indirect
|
||||
github.com/bytedance/sonic v1.10.2 // indirect
|
||||
github.com/cenkalti/backoff/v3 v3.2.2 // indirect
|
||||
github.com/certifi/gocertifi v0.0.0-20210507211836-431795d63e8d // indirect
|
||||
@@ -102,6 +102,7 @@ require (
|
||||
github.com/gin-gonic/gin v1.9.1 // indirect
|
||||
github.com/go-gorp/gorp/v3 v3.1.0 // indirect
|
||||
github.com/go-jose/go-jose/v3 v3.0.1 // indirect
|
||||
github.com/go-kit/log v0.2.1 // indirect
|
||||
github.com/go-logfmt/logfmt v0.6.0 // indirect
|
||||
github.com/go-logr/logr v1.3.0 // indirect
|
||||
github.com/go-logr/stdr v1.2.2 // indirect
|
||||
@@ -114,7 +115,7 @@ require (
|
||||
github.com/golang/snappy v0.0.4 // indirect
|
||||
github.com/gomarkdown/markdown v0.0.0-20230922112808-5421fefb8386 // indirect
|
||||
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
|
||||
github.com/google/uuid v1.4.0 // indirect
|
||||
github.com/google/uuid v1.5.0 // indirect
|
||||
github.com/gorilla/css v1.0.0 // indirect
|
||||
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect
|
||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 // indirect
|
||||
@@ -154,10 +155,10 @@ require (
|
||||
github.com/lestrrat-go/httprc v1.0.4 // indirect
|
||||
github.com/lestrrat-go/iter v1.0.2 // indirect
|
||||
github.com/lestrrat-go/option v1.0.1 // indirect
|
||||
github.com/lib/pq v1.10.9 // indirect
|
||||
github.com/magiconair/properties v1.8.7 // indirect
|
||||
github.com/mailgun/raymond/v2 v2.0.48 // indirect
|
||||
github.com/mailru/easyjson v0.7.7 // indirect
|
||||
github.com/mainflux/mainflux v0.12.0 // indirect
|
||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
|
||||
@@ -220,7 +221,7 @@ require (
|
||||
golang.org/x/arch v0.5.0 // indirect
|
||||
golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect
|
||||
golang.org/x/mod v0.13.0 // indirect
|
||||
golang.org/x/sys v0.15.0 // indirect
|
||||
golang.org/x/sys v0.16.0 // indirect
|
||||
golang.org/x/text v0.14.0 // indirect
|
||||
golang.org/x/time v0.3.0 // indirect
|
||||
golang.org/x/tools v0.14.0 // indirect
|
||||
|
||||
+3
-3
@@ -6,6 +6,7 @@ package http
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"net/url"
|
||||
"regexp"
|
||||
"strings"
|
||||
@@ -14,7 +15,6 @@ import (
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/auth"
|
||||
"github.com/absmach/magistrala/internal/apiutil"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
"github.com/absmach/magistrala/pkg/messaging"
|
||||
"github.com/absmach/mproxy/pkg/session"
|
||||
@@ -52,11 +52,11 @@ var channelRegExp = regexp.MustCompile(`^\/?channels\/([\w\-]+)\/messages(\/[^?]
|
||||
type handler struct {
|
||||
publisher messaging.Publisher
|
||||
auth magistrala.AuthzServiceClient
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
}
|
||||
|
||||
// NewHandler creates new Handler entity.
|
||||
func NewHandler(publisher messaging.Publisher, logger mglog.Logger, authClient magistrala.AuthzServiceClient) session.Handler {
|
||||
func NewHandler(publisher messaging.Publisher, logger *slog.Logger, authClient magistrala.AuthzServiceClient) session.Handler {
|
||||
return &handler{
|
||||
logger: logger,
|
||||
publisher: publisher,
|
||||
|
||||
@@ -6,16 +6,16 @@ package apiutil
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"log/slog"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
kithttp "github.com/go-kit/kit/transport/http"
|
||||
)
|
||||
|
||||
// LoggingErrorEncoder is a go-kit error encoder logging decorator.
|
||||
func LoggingErrorEncoder(logger mglog.Logger, enc kithttp.ErrorEncoder) kithttp.ErrorEncoder {
|
||||
func LoggingErrorEncoder(logger *slog.Logger, enc kithttp.ErrorEncoder) kithttp.ErrorEncoder {
|
||||
return func(ctx context.Context, err error, w http.ResponseWriter) {
|
||||
if errors.Contains(err, ErrValidation) {
|
||||
logger.Error(err.Error())
|
||||
|
||||
@@ -333,8 +333,6 @@ func TestReadNumQuery(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestLoggingErrorEncoder(t *testing.T) {
|
||||
logger := mglog.NewMock()
|
||||
|
||||
cases := []struct {
|
||||
desc string
|
||||
err error
|
||||
@@ -356,7 +354,7 @@ func TestLoggingErrorEncoder(t *testing.T) {
|
||||
encCalled = true
|
||||
}
|
||||
|
||||
errorEncoder := apiutil.LoggingErrorEncoder(logger, encFunc)
|
||||
errorEncoder := apiutil.LoggingErrorEncoder(mglog.NewMock(), encFunc)
|
||||
errorEncoder(context.Background(), c.err, httptest.NewRecorder())
|
||||
|
||||
assert.True(t, encCalled)
|
||||
|
||||
@@ -6,21 +6,21 @@ package api
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"time"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/groups"
|
||||
)
|
||||
|
||||
var _ groups.Service = (*loggingMiddleware)(nil)
|
||||
|
||||
type loggingMiddleware struct {
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
svc groups.Service
|
||||
}
|
||||
|
||||
// LoggingMiddleware adds logging facilities to the groups service.
|
||||
func LoggingMiddleware(svc groups.Service, logger mglog.Logger) groups.Service {
|
||||
func LoggingMiddleware(svc groups.Service, logger *slog.Logger) groups.Service {
|
||||
return &loggingMiddleware{logger, svc}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,10 +7,10 @@ import (
|
||||
"context"
|
||||
"crypto/tls"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"time"
|
||||
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
gocoap "github.com/plgd-dev/go-coap/v2"
|
||||
"github.com/plgd-dev/go-coap/v2/mux"
|
||||
)
|
||||
@@ -26,7 +26,7 @@ type Server struct {
|
||||
|
||||
var _ server.Server = (*Server)(nil)
|
||||
|
||||
func New(ctx context.Context, cancel context.CancelFunc, name string, config server.Config, handler mux.HandlerFunc, logger mglog.Logger) server.Server {
|
||||
func New(ctx context.Context, cancel context.CancelFunc, name string, config server.Config, handler mux.HandlerFunc, logger *slog.Logger) server.Server {
|
||||
listenFullAddress := fmt.Sprintf("%s:%s", config.Host, config.Port)
|
||||
return &Server{
|
||||
BaseServer: server.BaseServer{
|
||||
|
||||
@@ -8,12 +8,12 @@ import (
|
||||
"crypto/tls"
|
||||
"crypto/x509"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"net"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/credentials"
|
||||
@@ -34,7 +34,7 @@ type serviceRegister func(srv *grpc.Server)
|
||||
|
||||
var _ server.Server = (*Server)(nil)
|
||||
|
||||
func New(ctx context.Context, cancel context.CancelFunc, name string, config server.Config, registerService serviceRegister, logger mglog.Logger) server.Server {
|
||||
func New(ctx context.Context, cancel context.CancelFunc, name string, config server.Config, registerService serviceRegister, logger *slog.Logger) server.Server {
|
||||
listenFullAddress := fmt.Sprintf("%s:%s", config.Host, config.Port)
|
||||
return &Server{
|
||||
BaseServer: server.BaseServer{
|
||||
|
||||
@@ -6,11 +6,11 @@ package http
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -26,7 +26,7 @@ type Server struct {
|
||||
|
||||
var _ server.Server = (*Server)(nil)
|
||||
|
||||
func New(ctx context.Context, cancel context.CancelFunc, name string, config server.Config, handler http.Handler, logger mglog.Logger) server.Server {
|
||||
func New(ctx context.Context, cancel context.CancelFunc, name string, config server.Config, handler http.Handler, logger *slog.Logger) server.Server {
|
||||
listenFullAddress := fmt.Sprintf("%s:%s", config.Host, config.Port)
|
||||
httpServer := &http.Server{Addr: listenFullAddress, Handler: handler}
|
||||
return &Server{
|
||||
|
||||
@@ -5,11 +5,10 @@ package server
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
)
|
||||
|
||||
type Server interface {
|
||||
@@ -32,7 +31,7 @@ type BaseServer struct {
|
||||
Name string
|
||||
Address string
|
||||
Config Config
|
||||
Logger mglog.Logger
|
||||
Logger *slog.Logger
|
||||
Protocol string
|
||||
}
|
||||
|
||||
@@ -51,7 +50,7 @@ func stopAllServer(servers ...Server) error {
|
||||
return err
|
||||
}
|
||||
|
||||
func StopSignalHandler(ctx context.Context, cancel context.CancelFunc, logger mglog.Logger, svcName string, servers ...Server) error {
|
||||
func StopSignalHandler(ctx context.Context, cancel context.CancelFunc, logger *slog.Logger, svcName string, servers ...Server) error {
|
||||
var err error
|
||||
c := make(chan os.Signal, 2)
|
||||
signal.Notify(c, syscall.SIGINT, syscall.SIGABRT)
|
||||
|
||||
@@ -56,8 +56,8 @@ func (tr testRequest) make() (*http.Response, error) {
|
||||
|
||||
func newIvitationsServer() (*httptest.Server, *mocks.Service) {
|
||||
svc := new(mocks.Service)
|
||||
|
||||
logger := mglog.NewMock()
|
||||
|
||||
mux := api.MakeHandler(svc, logger, "test")
|
||||
return httptest.NewServer(mux), svc
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ package api
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"log/slog"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
@@ -13,7 +14,6 @@ import (
|
||||
"github.com/absmach/magistrala/internal/api"
|
||||
"github.com/absmach/magistrala/internal/apiutil"
|
||||
"github.com/absmach/magistrala/invitations"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
"github.com/go-chi/chi/v5"
|
||||
kithttp "github.com/go-kit/kit/transport/http"
|
||||
@@ -29,7 +29,7 @@ const (
|
||||
stateKey = "state"
|
||||
)
|
||||
|
||||
func MakeHandler(svc invitations.Service, logger mglog.Logger, instanceID string) http.Handler {
|
||||
func MakeHandler(svc invitations.Service, logger *slog.Logger, instanceID string) http.Handler {
|
||||
opts := []kithttp.ServerOption{
|
||||
kithttp.ServerErrorEncoder(apiutil.LoggingErrorEncoder(logger, api.EncodeError)),
|
||||
}
|
||||
|
||||
@@ -6,20 +6,20 @@ package middleware
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"time"
|
||||
|
||||
"github.com/absmach/magistrala/invitations"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
)
|
||||
|
||||
var _ invitations.Service = (*logging)(nil)
|
||||
|
||||
type logging struct {
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
svc invitations.Service
|
||||
}
|
||||
|
||||
func Logging(logger mglog.Logger, svc invitations.Service) invitations.Service {
|
||||
func Logging(logger *slog.Logger, svc invitations.Service) invitations.Service {
|
||||
return &logging{logger, svc}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
// Copyright (c) Abstract Machines
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
package logger
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"strings"
|
||||
)
|
||||
|
||||
const (
|
||||
// Error level is used when logging errors.
|
||||
Error Level = iota + 1
|
||||
// Warn level is used when logging warnings.
|
||||
Warn
|
||||
// Info level is used when logging info data.
|
||||
Info
|
||||
// Debug level is used when logging debugging info.
|
||||
Debug
|
||||
)
|
||||
|
||||
// ErrInvalidLogLevel indicates an unrecognized log level.
|
||||
var ErrInvalidLogLevel = errors.New("unrecognized log level")
|
||||
|
||||
// Level represents severity level while logging.
|
||||
type Level int
|
||||
|
||||
var levels = map[Level]string{
|
||||
Error: "error",
|
||||
Warn: "warn",
|
||||
Info: "info",
|
||||
Debug: "debug",
|
||||
}
|
||||
|
||||
func (lvl Level) String() string {
|
||||
return levels[lvl]
|
||||
}
|
||||
|
||||
func (lvl Level) isAllowed(logLevel Level) bool {
|
||||
return lvl <= logLevel
|
||||
}
|
||||
|
||||
// UnmarshalText returns log Level for the given string representation.
|
||||
func (lvl *Level) UnmarshalText(text string) error {
|
||||
switch strings.ToLower(text) {
|
||||
case "debug":
|
||||
*lvl = Debug
|
||||
case "info":
|
||||
*lvl = Info
|
||||
case "warn":
|
||||
*lvl = Warn
|
||||
case "error":
|
||||
*lvl = Error
|
||||
default:
|
||||
return ErrInvalidLogLevel
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -1,182 +0,0 @@
|
||||
// Copyright (c) Abstract Machines
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
package logger
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestUnmarshalText(t *testing.T) {
|
||||
cases := []struct {
|
||||
desc string
|
||||
input string
|
||||
output Level
|
||||
err error
|
||||
}{
|
||||
{
|
||||
desc: "select log level Not_A_Level",
|
||||
input: "Not_A_Level",
|
||||
output: 0,
|
||||
err: ErrInvalidLogLevel,
|
||||
},
|
||||
{
|
||||
desc: "select log level Bad_Input",
|
||||
input: "Bad_Input",
|
||||
output: 0,
|
||||
err: ErrInvalidLogLevel,
|
||||
},
|
||||
|
||||
{
|
||||
desc: "select log level debug",
|
||||
input: "debug",
|
||||
output: Debug,
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
desc: "select log level DEBUG",
|
||||
input: "DEBUG",
|
||||
output: Debug,
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
desc: "select log level info",
|
||||
input: "info",
|
||||
output: Info,
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
desc: "select log level INFO",
|
||||
input: "INFO",
|
||||
output: Info,
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
desc: "select log level warn",
|
||||
input: "warn",
|
||||
output: Warn,
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
desc: "select log level WARN",
|
||||
input: "WARN",
|
||||
output: Warn,
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
desc: "select log level Error",
|
||||
input: "Error",
|
||||
output: Error,
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
desc: "select log level ERROR",
|
||||
input: "ERROR",
|
||||
output: Error,
|
||||
err: nil,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range cases {
|
||||
var logLevel Level
|
||||
err := logLevel.UnmarshalText(tc.input)
|
||||
assert.Equal(t, tc.output, logLevel, fmt.Sprintf("%s: expected %s got %d", tc.desc, tc.output, logLevel))
|
||||
assert.Equal(t, tc.err, err, fmt.Sprintf("%s: expected %s got %d", tc.desc, tc.err, err))
|
||||
}
|
||||
}
|
||||
|
||||
func TestLevelIsAllowed(t *testing.T) {
|
||||
cases := []struct {
|
||||
desc string
|
||||
requestedLevel Level
|
||||
allowedLevel Level
|
||||
output bool
|
||||
}{
|
||||
{
|
||||
desc: "log debug when level debug",
|
||||
requestedLevel: Debug,
|
||||
allowedLevel: Debug,
|
||||
output: true,
|
||||
},
|
||||
{
|
||||
desc: "log info when level debug",
|
||||
requestedLevel: Info,
|
||||
allowedLevel: Debug,
|
||||
output: true,
|
||||
},
|
||||
{
|
||||
desc: "log warn when level debug",
|
||||
requestedLevel: Warn,
|
||||
allowedLevel: Debug,
|
||||
output: true,
|
||||
},
|
||||
{
|
||||
desc: "log error when level debug",
|
||||
requestedLevel: Error,
|
||||
allowedLevel: Debug,
|
||||
output: true,
|
||||
},
|
||||
{
|
||||
desc: "log warn when level info",
|
||||
requestedLevel: Warn,
|
||||
allowedLevel: Info,
|
||||
output: true,
|
||||
},
|
||||
{
|
||||
desc: "log error when level warn",
|
||||
requestedLevel: Error,
|
||||
allowedLevel: Warn,
|
||||
output: true,
|
||||
},
|
||||
{
|
||||
desc: "log error when level error",
|
||||
requestedLevel: Error,
|
||||
allowedLevel: Error,
|
||||
output: true,
|
||||
},
|
||||
|
||||
{
|
||||
desc: "log debug when level error",
|
||||
requestedLevel: Debug,
|
||||
allowedLevel: Error,
|
||||
output: false,
|
||||
},
|
||||
{
|
||||
desc: "log info when level error",
|
||||
requestedLevel: Info,
|
||||
allowedLevel: Error,
|
||||
output: false,
|
||||
},
|
||||
{
|
||||
desc: "log warn when level error",
|
||||
requestedLevel: Warn,
|
||||
allowedLevel: Error,
|
||||
output: false,
|
||||
},
|
||||
{
|
||||
desc: "log debug when level warn",
|
||||
requestedLevel: Debug,
|
||||
allowedLevel: Warn,
|
||||
output: false,
|
||||
},
|
||||
{
|
||||
desc: "log info when level warn",
|
||||
requestedLevel: Info,
|
||||
allowedLevel: Warn,
|
||||
output: false,
|
||||
},
|
||||
{
|
||||
desc: "log debug when level info",
|
||||
requestedLevel: Debug,
|
||||
allowedLevel: Info,
|
||||
output: false,
|
||||
},
|
||||
}
|
||||
for _, tc := range cases {
|
||||
result := tc.requestedLevel.isAllowed(tc.allowedLevel)
|
||||
assert.Equal(t, tc.output, result, fmt.Sprintf("%s: expected %t got %t", tc.desc, tc.output, result))
|
||||
}
|
||||
}
|
||||
+10
-60
@@ -6,70 +6,20 @@ package logger
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"log/slog"
|
||||
"time"
|
||||
|
||||
"github.com/go-kit/log"
|
||||
)
|
||||
|
||||
// Logger specifies logging API.
|
||||
type Logger interface {
|
||||
// Debug logs any object in JSON format on debug level.
|
||||
Debug(string)
|
||||
// Info logs any object in JSON format on info level.
|
||||
Info(string)
|
||||
// Warn logs any object in JSON format on warning level.
|
||||
Warn(string)
|
||||
// Error logs any object in JSON format on error level.
|
||||
Error(string)
|
||||
// Fatal logs any object in JSON format on any level and calls os.Exit(1).
|
||||
Fatal(string)
|
||||
}
|
||||
|
||||
var _ Logger = (*logger)(nil)
|
||||
|
||||
type logger struct {
|
||||
kitLogger log.Logger
|
||||
level Level
|
||||
}
|
||||
|
||||
// New returns wrapped go kit logger.
|
||||
func New(out io.Writer, levelText string) (Logger, error) {
|
||||
var level Level
|
||||
err := level.UnmarshalText(levelText)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf(`{"level":"error","message":"%s: %s","ts":"%s"}`, err, levelText, time.RFC3339Nano)
|
||||
// New returns wrapped slog logger.
|
||||
func New(w io.Writer, levelText string) (*slog.Logger, error) {
|
||||
var level slog.Level
|
||||
if err := level.UnmarshalText([]byte(levelText)); err != nil {
|
||||
return &slog.Logger{}, fmt.Errorf(`{"level":"error","message":"%s: %s","ts":"%s"}`, err, levelText, time.RFC3339Nano)
|
||||
}
|
||||
l := log.NewJSONLogger(log.NewSyncWriter(out))
|
||||
l = log.With(l, "ts", log.DefaultTimestampUTC)
|
||||
return &logger{l, level}, err
|
||||
}
|
||||
|
||||
func (l logger) Debug(msg string) {
|
||||
if Debug.isAllowed(l.level) {
|
||||
_ = l.kitLogger.Log("level", Debug.String(), "message", msg)
|
||||
}
|
||||
}
|
||||
logHandler := slog.NewJSONHandler(w, &slog.HandlerOptions{
|
||||
Level: level,
|
||||
})
|
||||
|
||||
func (l logger) Info(msg string) {
|
||||
if Info.isAllowed(l.level) {
|
||||
_ = l.kitLogger.Log("level", Info.String(), "message", msg)
|
||||
}
|
||||
}
|
||||
|
||||
func (l logger) Warn(msg string) {
|
||||
if Warn.isAllowed(l.level) {
|
||||
_ = l.kitLogger.Log("level", Warn.String(), "message", msg)
|
||||
}
|
||||
}
|
||||
|
||||
func (l logger) Error(msg string) {
|
||||
if Error.isAllowed(l.level) {
|
||||
_ = l.kitLogger.Log("level", Error.String(), "message", msg)
|
||||
}
|
||||
}
|
||||
|
||||
func (l logger) Fatal(msg string) {
|
||||
_ = l.kitLogger.Log("fatal", msg)
|
||||
os.Exit(1)
|
||||
return slog.New(logHandler), nil
|
||||
}
|
||||
|
||||
+27
-223
@@ -4,30 +4,11 @@
|
||||
package logger_test
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"os/exec"
|
||||
"log/slog"
|
||||
"testing"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
// Env vars needed for testing Fatal in subprocess.
|
||||
const (
|
||||
testMsg = "TEST_MSG"
|
||||
testFlag = "TEST_FLAG"
|
||||
testFlagVal = "assert_test"
|
||||
)
|
||||
|
||||
var (
|
||||
_ io.Writer = (*mockWriter)(nil)
|
||||
logger mglog.Logger
|
||||
err error
|
||||
output logMsg
|
||||
)
|
||||
|
||||
type mockWriter struct {
|
||||
@@ -39,221 +20,44 @@ func (writer *mockWriter) Write(p []byte) (int, error) {
|
||||
return len(p), nil
|
||||
}
|
||||
|
||||
func (writer *mockWriter) Read() (logMsg, error) {
|
||||
var output logMsg
|
||||
err := json.Unmarshal(writer.value, &output)
|
||||
return output, err
|
||||
}
|
||||
|
||||
type logMsg struct {
|
||||
Level string `json:"level"`
|
||||
Message string `json:"message"`
|
||||
Fatal string `json:"fatal,omitempty"` // needed for Fatal messages
|
||||
}
|
||||
|
||||
func TestDebug(t *testing.T) {
|
||||
func TestLoggerInitialization(t *testing.T) {
|
||||
cases := []struct {
|
||||
desc string
|
||||
input string
|
||||
level string
|
||||
output logMsg
|
||||
desc string
|
||||
level string
|
||||
}{
|
||||
{
|
||||
desc: "debug log ordinary string",
|
||||
input: "input_string",
|
||||
level: mglog.Debug.String(),
|
||||
output: logMsg{mglog.Debug.String(), "input_string", ""},
|
||||
desc: "debug level",
|
||||
level: slog.LevelDebug.String(),
|
||||
},
|
||||
{
|
||||
desc: "debug log empty string",
|
||||
input: "",
|
||||
level: mglog.Debug.String(),
|
||||
output: logMsg{mglog.Debug.String(), "", ""},
|
||||
desc: "info level",
|
||||
level: slog.LevelInfo.String(),
|
||||
},
|
||||
{
|
||||
desc: "debug ordinary string lvl not allowed",
|
||||
input: "input_string",
|
||||
level: mglog.Info.String(),
|
||||
output: logMsg{"", "", ""},
|
||||
desc: "warn level",
|
||||
level: slog.LevelWarn.String(),
|
||||
},
|
||||
{
|
||||
desc: "debug empty string lvl not allowed",
|
||||
input: "",
|
||||
level: mglog.Info.String(),
|
||||
output: logMsg{"", "", ""},
|
||||
desc: "error level",
|
||||
level: slog.LevelError.String(),
|
||||
},
|
||||
{
|
||||
desc: "invalid level",
|
||||
level: "invalid",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range cases {
|
||||
writer := mockWriter{}
|
||||
logger, err = mglog.New(&writer, tc.level)
|
||||
assert.Nil(t, err, fmt.Sprintf("%s: unexpected error %s", tc.desc, err))
|
||||
logger.Debug(tc.input)
|
||||
output, err = writer.Read()
|
||||
assert.Equal(t, tc.output, output, fmt.Sprintf("%s: expected %s got %s", tc.desc, tc.output, output))
|
||||
}
|
||||
}
|
||||
|
||||
func TestInfo(t *testing.T) {
|
||||
cases := []struct {
|
||||
desc string
|
||||
input string
|
||||
level string
|
||||
output logMsg
|
||||
}{
|
||||
{
|
||||
desc: "info log ordinary string",
|
||||
input: "input_string",
|
||||
level: mglog.Info.String(),
|
||||
output: logMsg{mglog.Info.String(), "input_string", ""},
|
||||
},
|
||||
{
|
||||
desc: "info log empty string",
|
||||
input: "",
|
||||
level: mglog.Info.String(),
|
||||
output: logMsg{mglog.Info.String(), "", ""},
|
||||
},
|
||||
{
|
||||
desc: "info ordinary string lvl not allowed",
|
||||
input: "input_string",
|
||||
level: mglog.Warn.String(),
|
||||
output: logMsg{"", "", ""},
|
||||
},
|
||||
{
|
||||
desc: "info empty string lvl not allowed",
|
||||
input: "",
|
||||
level: mglog.Warn.String(),
|
||||
output: logMsg{"", "", ""},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range cases {
|
||||
writer := mockWriter{}
|
||||
logger, err = mglog.New(&writer, tc.level)
|
||||
assert.Nil(t, err, fmt.Sprintf("%s: unexpected error %s", tc.desc, err))
|
||||
logger.Info(tc.input)
|
||||
output, err = writer.Read()
|
||||
assert.Equal(t, tc.output, output, fmt.Sprintf("%s: expected %s got %s", tc.desc, tc.output, output))
|
||||
}
|
||||
}
|
||||
|
||||
func TestWarn(t *testing.T) {
|
||||
cases := []struct {
|
||||
desc string
|
||||
input string
|
||||
level string
|
||||
output logMsg
|
||||
}{
|
||||
{
|
||||
desc: "warn log ordinary string",
|
||||
input: "input_string",
|
||||
level: mglog.Warn.String(),
|
||||
output: logMsg{mglog.Warn.String(), "input_string", ""},
|
||||
},
|
||||
{
|
||||
desc: "warn log empty string",
|
||||
input: "",
|
||||
level: mglog.Warn.String(),
|
||||
output: logMsg{mglog.Warn.String(), "", ""},
|
||||
},
|
||||
{
|
||||
desc: "warn ordinary string lvl not allowed",
|
||||
input: "input_string",
|
||||
level: mglog.Error.String(),
|
||||
output: logMsg{"", "", ""},
|
||||
},
|
||||
{
|
||||
desc: "warn empty string lvl not allowed",
|
||||
input: "",
|
||||
level: mglog.Error.String(),
|
||||
output: logMsg{"", "", ""},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range cases {
|
||||
writer := mockWriter{}
|
||||
logger, err = mglog.New(&writer, tc.level)
|
||||
require.Nil(t, err, fmt.Sprintf("%s: unexpected error %s", tc.desc, err))
|
||||
logger.Warn(tc.input)
|
||||
output, err = writer.Read()
|
||||
assert.Equal(t, tc.output, output, fmt.Sprintf("%s: expected %s got %s", tc.desc, tc.output, output))
|
||||
}
|
||||
}
|
||||
|
||||
func TestError(t *testing.T) {
|
||||
cases := []struct {
|
||||
desc string
|
||||
input string
|
||||
output logMsg
|
||||
}{
|
||||
{
|
||||
desc: "error log ordinary string",
|
||||
input: "input_string",
|
||||
output: logMsg{mglog.Error.String(), "input_string", ""},
|
||||
},
|
||||
{
|
||||
desc: "error log empty string",
|
||||
input: "",
|
||||
output: logMsg{mglog.Error.String(), "", ""},
|
||||
},
|
||||
}
|
||||
|
||||
writer := mockWriter{}
|
||||
logger, err := mglog.New(&writer, mglog.Error.String())
|
||||
require.Nil(t, err)
|
||||
for _, tc := range cases {
|
||||
logger.Error(tc.input)
|
||||
output, err := writer.Read()
|
||||
assert.Nil(t, err, fmt.Sprintf("%s: unexpected error %s", tc.desc, err))
|
||||
assert.Equal(t, tc.output, output, fmt.Sprintf("%s: expected %s got %s", tc.desc, tc.output, output))
|
||||
}
|
||||
}
|
||||
|
||||
func TestFatal(t *testing.T) {
|
||||
// This is the actually Fatal call we test that will
|
||||
// be executed in the subprocess spawned by the test.
|
||||
if os.Getenv(testFlag) == testFlagVal {
|
||||
logger, err := mglog.New(os.Stderr, mglog.Error.String())
|
||||
require.Nil(t, err)
|
||||
msg := os.Getenv(testMsg)
|
||||
logger.Fatal(msg)
|
||||
return
|
||||
}
|
||||
|
||||
cases := []struct {
|
||||
desc string
|
||||
input string
|
||||
output logMsg
|
||||
}{
|
||||
{
|
||||
desc: "error log ordinary string",
|
||||
input: "input_string",
|
||||
output: logMsg{"", "", "input_string"},
|
||||
},
|
||||
{
|
||||
desc: "error log empty string",
|
||||
input: "",
|
||||
output: logMsg{"", "", ""},
|
||||
},
|
||||
}
|
||||
writer := mockWriter{}
|
||||
for _, tc := range cases {
|
||||
// This command will run this same test as a separate subprocess.
|
||||
// It needs to be executed as a subprocess because we need to test os.Exit(1) call.
|
||||
cmd := exec.Command(os.Args[0], "-test.run=TestFatal")
|
||||
// This flag is used to prevent an infinite loop of spawning this test and never
|
||||
// actually running the necessary Fatal call.
|
||||
cmd.Env = append(os.Environ(), fmt.Sprintf("%s=%s", testFlag, testFlagVal))
|
||||
cmd.Stderr = &writer
|
||||
cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", testMsg, tc.input))
|
||||
err := cmd.Run()
|
||||
if e, ok := err.(*exec.ExitError); ok && !e.Success() {
|
||||
res, err := writer.Read()
|
||||
require.Nil(t, err, "required successful buffer read")
|
||||
assert.Equal(t, 1, e.ExitCode(), fmt.Sprintf("%s: expected exit code %d, got %d", tc.desc, 1, e.ExitCode()))
|
||||
assert.Equal(t, tc.output, res, fmt.Sprintf("%s: expected output %s got %s", tc.desc, tc.output, res))
|
||||
continue
|
||||
}
|
||||
t.Fatal("subprocess ran successfully, want non-zero exit status")
|
||||
t.Run(tc.desc, func(t *testing.T) {
|
||||
writer := &mockWriter{}
|
||||
logger, err := mglog.New(writer, tc.level)
|
||||
if tc.level == "invalid" {
|
||||
assert.NotNil(t, err, "expected error during logger initialization")
|
||||
assert.NotNil(t, logger, "logger should not be nil when an error occurs")
|
||||
} else {
|
||||
assert.Nil(t, err, "unexpected error during logger initialization")
|
||||
assert.NotNil(t, logger, "logger should not be nil")
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
+8
-20
@@ -3,26 +3,14 @@
|
||||
|
||||
package logger
|
||||
|
||||
var _ Logger = (*loggerMock)(nil)
|
||||
import (
|
||||
"bytes"
|
||||
"log/slog"
|
||||
)
|
||||
|
||||
type loggerMock struct{}
|
||||
// NewMock returns wrapped slog logger mock.
|
||||
func NewMock() *slog.Logger {
|
||||
buf := &bytes.Buffer{}
|
||||
|
||||
// NewMock returns wrapped go kit logger mock.
|
||||
func NewMock() Logger {
|
||||
return &loggerMock{}
|
||||
}
|
||||
|
||||
func (l loggerMock) Debug(msg string) {
|
||||
}
|
||||
|
||||
func (l loggerMock) Info(msg string) {
|
||||
}
|
||||
|
||||
func (l loggerMock) Warn(msg string) {
|
||||
}
|
||||
|
||||
func (l loggerMock) Error(msg string) {
|
||||
}
|
||||
|
||||
func (l loggerMock) Fatal(msg string) {
|
||||
return slog.New(slog.NewJSONHandler(buf, nil))
|
||||
}
|
||||
|
||||
+3
-3
@@ -8,21 +8,21 @@ package api
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"time"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/lora"
|
||||
)
|
||||
|
||||
var _ lora.Service = (*loggingMiddleware)(nil)
|
||||
|
||||
type loggingMiddleware struct {
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
svc lora.Service
|
||||
}
|
||||
|
||||
// LoggingMiddleware adds logging facilities to the core service.
|
||||
func LoggingMiddleware(svc lora.Service, logger mglog.Logger) lora.Service {
|
||||
func LoggingMiddleware(svc lora.Service, logger *slog.Logger) lora.Service {
|
||||
return &loggingMiddleware{
|
||||
logger: logger,
|
||||
svc: svc,
|
||||
|
||||
+3
-3
@@ -8,9 +8,9 @@ import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"time"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/lora"
|
||||
mqtt "github.com/eclipse/paho.mqtt.golang"
|
||||
)
|
||||
@@ -24,12 +24,12 @@ type Subscriber interface {
|
||||
type broker struct {
|
||||
svc lora.Service
|
||||
client mqtt.Client
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
timeout time.Duration
|
||||
}
|
||||
|
||||
// NewBroker returns new MQTT broker instance.
|
||||
func NewBroker(svc lora.Service, client mqtt.Client, t time.Duration, log mglog.Logger) Subscriber {
|
||||
func NewBroker(svc lora.Service, client mqtt.Client, t time.Duration, log *slog.Logger) Subscriber {
|
||||
return broker{
|
||||
svc: svc,
|
||||
client: client,
|
||||
|
||||
+4
-4
@@ -6,9 +6,9 @@ package mqtt
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"strings"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/messaging"
|
||||
)
|
||||
|
||||
@@ -21,11 +21,11 @@ type Forwarder interface {
|
||||
|
||||
type forwarder struct {
|
||||
topic string
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
}
|
||||
|
||||
// NewForwarder returns new Forwarder implementation.
|
||||
func NewForwarder(topic string, logger mglog.Logger) Forwarder {
|
||||
func NewForwarder(topic string, logger *slog.Logger) Forwarder {
|
||||
return forwarder{
|
||||
topic: topic,
|
||||
logger: logger,
|
||||
@@ -42,7 +42,7 @@ func (f forwarder) Forward(ctx context.Context, id string, sub messaging.Subscri
|
||||
return sub.Subscribe(ctx, subCfg)
|
||||
}
|
||||
|
||||
func handle(ctx context.Context, pub messaging.Publisher, logger mglog.Logger) handleFunc {
|
||||
func handle(ctx context.Context, pub messaging.Publisher, logger *slog.Logger) handleFunc {
|
||||
return func(msg *messaging.Message) error {
|
||||
if msg.GetProtocol() == protocol {
|
||||
return nil
|
||||
|
||||
+3
-3
@@ -6,6 +6,7 @@ package mqtt
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"net/url"
|
||||
"regexp"
|
||||
"strings"
|
||||
@@ -13,7 +14,6 @@ import (
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/auth"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/mqtt/events"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
"github.com/absmach/magistrala/pkg/messaging"
|
||||
@@ -58,12 +58,12 @@ var channelRegExp = regexp.MustCompile(`^\/?channels\/([\w\-]+)\/messages(\/[^?]
|
||||
type handler struct {
|
||||
publisher messaging.Publisher
|
||||
auth magistrala.AuthzServiceClient
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
es events.EventStore
|
||||
}
|
||||
|
||||
// NewHandler creates new Handler entity.
|
||||
func NewHandler(publisher messaging.Publisher, es events.EventStore, logger mglog.Logger, authClient magistrala.AuthzServiceClient) session.Handler {
|
||||
func NewHandler(publisher messaging.Publisher, es events.EventStore, logger *slog.Logger, authClient magistrala.AuthzServiceClient) session.Handler {
|
||||
return &handler{
|
||||
es: es,
|
||||
logger: logger,
|
||||
|
||||
+3
-3
@@ -6,8 +6,8 @@ package opcua
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/opcua/db"
|
||||
)
|
||||
|
||||
@@ -62,11 +62,11 @@ type adapterService struct {
|
||||
channelsRM RouteMapRepository
|
||||
connectRM RouteMapRepository
|
||||
cfg Config
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
}
|
||||
|
||||
// New instantiates the OPC-UA adapter implementation.
|
||||
func New(sub Subscriber, brow Browser, thingsRM, channelsRM, connectRM RouteMapRepository, cfg Config, log mglog.Logger) Service {
|
||||
func New(sub Subscriber, brow Browser, thingsRM, channelsRM, connectRM RouteMapRepository, cfg Config, log *slog.Logger) Service {
|
||||
return &adapterService{
|
||||
subscriber: sub,
|
||||
browser: brow,
|
||||
|
||||
@@ -8,21 +8,21 @@ package api
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"time"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/opcua"
|
||||
)
|
||||
|
||||
var _ opcua.Service = (*loggingMiddleware)(nil)
|
||||
|
||||
type loggingMiddleware struct {
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
svc opcua.Service
|
||||
}
|
||||
|
||||
// LoggingMiddleware adds logging facilities to the core service.
|
||||
func LoggingMiddleware(svc opcua.Service, logger mglog.Logger) opcua.Service {
|
||||
func LoggingMiddleware(svc opcua.Service, logger *slog.Logger) opcua.Service {
|
||||
return &loggingMiddleware{
|
||||
logger: logger,
|
||||
svc: svc,
|
||||
|
||||
@@ -6,11 +6,11 @@ package api
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"log/slog"
|
||||
"net/http"
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/internal/apiutil"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/opcua"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
"github.com/go-chi/chi/v5"
|
||||
@@ -28,7 +28,7 @@ const (
|
||||
)
|
||||
|
||||
// MakeHandler returns a HTTP handler for API endpoints.
|
||||
func MakeHandler(svc opcua.Service, logger mglog.Logger, instanceID string) http.Handler {
|
||||
func MakeHandler(svc opcua.Service, logger *slog.Logger, instanceID string) http.Handler {
|
||||
opts := []kithttp.ServerOption{
|
||||
kithttp.ServerErrorEncoder(apiutil.LoggingErrorEncoder(logger, encodeError)),
|
||||
}
|
||||
|
||||
@@ -5,8 +5,8 @@ package gopcua
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log/slog"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/opcua"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
opcuagocpua "github.com/gopcua/opcua"
|
||||
@@ -36,11 +36,11 @@ var _ opcua.Browser = (*browser)(nil)
|
||||
|
||||
type browser struct {
|
||||
ctx context.Context
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
}
|
||||
|
||||
// NewBrowser returns new OPC-UA browser instance.
|
||||
func NewBrowser(ctx context.Context, log mglog.Logger) opcua.Browser {
|
||||
func NewBrowser(ctx context.Context, log *slog.Logger) opcua.Browser {
|
||||
return browser{
|
||||
ctx: ctx,
|
||||
logger: log,
|
||||
|
||||
@@ -6,10 +6,10 @@ package gopcua
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/opcua"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
"github.com/absmach/magistrala/pkg/messaging"
|
||||
@@ -45,7 +45,7 @@ type client struct {
|
||||
thingsRM opcua.RouteMapRepository
|
||||
channelsRM opcua.RouteMapRepository
|
||||
connectRM opcua.RouteMapRepository
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
}
|
||||
|
||||
type message struct {
|
||||
@@ -58,7 +58,7 @@ type message struct {
|
||||
}
|
||||
|
||||
// NewSubscriber returns new OPC-UA client instance.
|
||||
func NewSubscriber(ctx context.Context, publisher messaging.Publisher, thingsRM, channelsRM, connectRM opcua.RouteMapRepository, log mglog.Logger) opcua.Subscriber {
|
||||
func NewSubscriber(ctx context.Context, publisher messaging.Publisher, thingsRM, channelsRM, connectRM opcua.RouteMapRepository, log *slog.Logger) opcua.Subscriber {
|
||||
return client{
|
||||
ctx: ctx,
|
||||
publisher: publisher,
|
||||
|
||||
@@ -8,9 +8,9 @@ import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"time"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/events"
|
||||
"github.com/absmach/magistrala/pkg/messaging"
|
||||
broker "github.com/absmach/magistrala/pkg/messaging/nats"
|
||||
@@ -51,10 +51,10 @@ type subEventStore struct {
|
||||
pubsub messaging.PubSub
|
||||
stream string
|
||||
consumer string
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
}
|
||||
|
||||
func NewSubscriber(ctx context.Context, url, stream, consumer string, logger mglog.Logger) (events.Subscriber, error) {
|
||||
func NewSubscriber(ctx context.Context, url, stream, consumer string, logger *slog.Logger) (events.Subscriber, error) {
|
||||
if stream == "" {
|
||||
return nil, ErrEmptyStream
|
||||
}
|
||||
@@ -121,7 +121,7 @@ func (re event) Encode() (map[string]interface{}, error) {
|
||||
type eventHandler struct {
|
||||
handler events.EventHandler
|
||||
ctx context.Context
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
}
|
||||
|
||||
func (eh *eventHandler) Handle(msg *messaging.Message) error {
|
||||
|
||||
@@ -8,8 +8,8 @@ import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/events"
|
||||
"github.com/absmach/magistrala/pkg/messaging"
|
||||
broker "github.com/absmach/magistrala/pkg/messaging/rabbitmq"
|
||||
@@ -34,10 +34,10 @@ type subEventStore struct {
|
||||
pubsub messaging.PubSub
|
||||
stream string
|
||||
consumer string
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
}
|
||||
|
||||
func NewSubscriber(url, stream, consumer string, logger mglog.Logger) (events.Subscriber, error) {
|
||||
func NewSubscriber(url, stream, consumer string, logger *slog.Logger) (events.Subscriber, error) {
|
||||
if stream == "" {
|
||||
return nil, ErrEmptyStream
|
||||
}
|
||||
@@ -103,7 +103,7 @@ func (re event) Encode() (map[string]interface{}, error) {
|
||||
type eventHandler struct {
|
||||
handler events.EventHandler
|
||||
ctx context.Context
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
}
|
||||
|
||||
func (eh *eventHandler) Handle(msg *messaging.Message) error {
|
||||
|
||||
@@ -10,8 +10,8 @@ import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/events"
|
||||
"github.com/go-redis/redis/v8"
|
||||
)
|
||||
@@ -36,10 +36,10 @@ type subEventStore struct {
|
||||
client *redis.Client
|
||||
stream string
|
||||
consumer string
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
}
|
||||
|
||||
func NewSubscriber(url, stream, consumer string, logger mglog.Logger) (events.Subscriber, error) {
|
||||
func NewSubscriber(url, stream, consumer string, logger *slog.Logger) (events.Subscriber, error) {
|
||||
if stream == "" {
|
||||
return nil, ErrEmptyStream
|
||||
}
|
||||
|
||||
@@ -9,8 +9,8 @@ package store
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
"log/slog"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/events"
|
||||
"github.com/absmach/magistrala/pkg/events/nats"
|
||||
)
|
||||
@@ -28,7 +28,7 @@ func NewPublisher(ctx context.Context, url, stream string) (events.Publisher, er
|
||||
return pb, nil
|
||||
}
|
||||
|
||||
func NewSubscriber(ctx context.Context, url, stream, consumer string, logger mglog.Logger) (events.Subscriber, error) {
|
||||
func NewSubscriber(ctx context.Context, url, stream, consumer string, logger *slog.Logger) (events.Subscriber, error) {
|
||||
pb, err := nats.NewSubscriber(ctx, url, stream, consumer, logger)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -9,8 +9,8 @@ package store
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
"log/slog"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/events"
|
||||
"github.com/absmach/magistrala/pkg/events/rabbitmq"
|
||||
)
|
||||
@@ -28,7 +28,7 @@ func NewPublisher(ctx context.Context, url, stream string) (events.Publisher, er
|
||||
return pb, nil
|
||||
}
|
||||
|
||||
func NewSubscriber(_ context.Context, url, stream, consumer string, logger mglog.Logger) (events.Subscriber, error) {
|
||||
func NewSubscriber(_ context.Context, url, stream, consumer string, logger *slog.Logger) (events.Subscriber, error) {
|
||||
pb, err := rabbitmq.NewSubscriber(url, stream, consumer, logger)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -9,8 +9,8 @@ package store
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
"log/slog"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/events"
|
||||
"github.com/absmach/magistrala/pkg/events/redis"
|
||||
)
|
||||
@@ -28,7 +28,7 @@ func NewPublisher(ctx context.Context, url, stream string) (events.Publisher, er
|
||||
return pb, nil
|
||||
}
|
||||
|
||||
func NewSubscriber(_ context.Context, url, stream, consumer string, logger mglog.Logger) (events.Subscriber, error) {
|
||||
func NewSubscriber(_ context.Context, url, stream, consumer string, logger *slog.Logger) (events.Subscriber, error) {
|
||||
pb, err := redis.NewSubscriber(url, stream, consumer, logger)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -9,8 +9,8 @@ package brokers
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
"log/slog"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/messaging"
|
||||
"github.com/absmach/magistrala/pkg/messaging/nats"
|
||||
)
|
||||
@@ -31,7 +31,7 @@ func NewPublisher(ctx context.Context, url string, opts ...messaging.Option) (me
|
||||
return pb, nil
|
||||
}
|
||||
|
||||
func NewPubSub(ctx context.Context, url string, logger mglog.Logger, opts ...messaging.Option) (messaging.PubSub, error) {
|
||||
func NewPubSub(ctx context.Context, url string, logger *slog.Logger, opts ...messaging.Option) (messaging.PubSub, error) {
|
||||
pb, err := nats.NewPubSub(ctx, url, logger, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -9,8 +9,8 @@ package brokers
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
"log/slog"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/messaging"
|
||||
"github.com/absmach/magistrala/pkg/messaging/rabbitmq"
|
||||
)
|
||||
@@ -31,7 +31,7 @@ func NewPublisher(_ context.Context, url string, opts ...messaging.Option) (mess
|
||||
return pb, nil
|
||||
}
|
||||
|
||||
func NewPubSub(_ context.Context, url string, logger mglog.Logger, opts ...messaging.Option) (messaging.PubSub, error) {
|
||||
func NewPubSub(_ context.Context, url string, logger *slog.Logger, opts ...messaging.Option) (messaging.PubSub, error) {
|
||||
pb, err := rabbitmq.NewPubSub(url, logger, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -8,16 +8,16 @@ package handler
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"time"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/mproxy/pkg/session"
|
||||
)
|
||||
|
||||
var _ session.Handler = (*loggingMiddleware)(nil)
|
||||
|
||||
type loggingMiddleware struct {
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
svc session.Handler
|
||||
}
|
||||
|
||||
@@ -135,6 +135,6 @@ func (lm *loggingMiddleware) Unsubscribe(ctx context.Context, topics *[]string)
|
||||
}
|
||||
|
||||
// LoggingMiddleware adds logging facilities to the adapter.
|
||||
func LoggingMiddleware(svc session.Handler, logger mglog.Logger) session.Handler {
|
||||
func LoggingMiddleware(svc session.Handler, logger *slog.Logger) session.Handler {
|
||||
return &loggingMiddleware{logger, svc}
|
||||
}
|
||||
|
||||
@@ -7,10 +7,10 @@ import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/messaging"
|
||||
mqtt "github.com/eclipse/paho.mqtt.golang"
|
||||
"google.golang.org/protobuf/proto"
|
||||
@@ -51,7 +51,7 @@ type subscription struct {
|
||||
|
||||
type pubsub struct {
|
||||
publisher
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
mu sync.RWMutex
|
||||
address string
|
||||
timeout time.Duration
|
||||
@@ -59,7 +59,7 @@ type pubsub struct {
|
||||
}
|
||||
|
||||
// NewPubSub returns MQTT message publisher/subscriber.
|
||||
func NewPubSub(url string, qos uint8, timeout time.Duration, logger mglog.Logger) (messaging.PubSub, error) {
|
||||
func NewPubSub(url string, qos uint8, timeout time.Duration, logger *slog.Logger) (messaging.PubSub, error) {
|
||||
client, err := newClient(url, "mqtt-publisher", timeout)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -6,6 +6,7 @@ package mqtt_test
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
@@ -21,7 +22,7 @@ import (
|
||||
|
||||
var (
|
||||
pubsub messaging.PubSub
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
address string
|
||||
)
|
||||
|
||||
@@ -51,7 +52,7 @@ func TestMain(m *testing.M) {
|
||||
address = fmt.Sprintf("%s:%s", "localhost", container.GetPort(port))
|
||||
pool.MaxWait = poolMaxWait
|
||||
|
||||
logger, err = mglog.New(os.Stdout, mglog.Debug.String())
|
||||
logger, err = mglog.New(os.Stdout, "debug")
|
||||
if err != nil {
|
||||
log.Fatalf(err.Error())
|
||||
}
|
||||
|
||||
@@ -7,10 +7,10 @@ import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/messaging"
|
||||
broker "github.com/nats-io/nats.go"
|
||||
"github.com/nats-io/nats.go/jetstream"
|
||||
@@ -42,7 +42,7 @@ var _ messaging.PubSub = (*pubsub)(nil)
|
||||
|
||||
type pubsub struct {
|
||||
publisher
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
stream jetstream.Stream
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ type pubsub struct {
|
||||
// from ordinary subscribe. For more information, please take a look
|
||||
// here: https://docs.nats.io/developing-with-nats/receiving/queues.
|
||||
// If the queue is empty, Subscribe will be used.
|
||||
func NewPubSub(ctx context.Context, url string, logger mglog.Logger, opts ...messaging.Option) (messaging.PubSub, error) {
|
||||
func NewPubSub(ctx context.Context, url string, logger *slog.Logger, opts ...messaging.Option) (messaging.PubSub, error) {
|
||||
conn, err := broker.Connect(url, broker.MaxReconnects(maxReconnects))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -7,9 +7,9 @@ import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"sync"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/messaging"
|
||||
amqp "github.com/rabbitmq/amqp091-go"
|
||||
"google.golang.org/protobuf/proto"
|
||||
@@ -40,13 +40,13 @@ type subscription struct {
|
||||
}
|
||||
type pubsub struct {
|
||||
publisher
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
subscriptions map[string]map[string]subscription
|
||||
mu sync.Mutex
|
||||
}
|
||||
|
||||
// NewPubSub returns RabbitMQ message publisher/subscriber.
|
||||
func NewPubSub(url string, logger mglog.Logger, opts ...messaging.Option) (messaging.PubSub, error) {
|
||||
func NewPubSub(url string, logger *slog.Logger, opts ...messaging.Option) (messaging.PubSub, error) {
|
||||
conn, err := amqp.Dial(url)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -6,6 +6,7 @@ package rabbitmq_test
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
@@ -29,7 +30,7 @@ const (
|
||||
var (
|
||||
publisher messaging.Publisher
|
||||
pubsub messaging.PubSub
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
address string
|
||||
)
|
||||
|
||||
@@ -53,7 +54,7 @@ func TestMain(m *testing.M) {
|
||||
log.Fatalf("Could not connect to docker: %s", err)
|
||||
}
|
||||
|
||||
logger, err = mglog.New(os.Stdout, mglog.Debug.String())
|
||||
logger, err = mglog.New(os.Stdout, "debug")
|
||||
if err != nil {
|
||||
log.Fatalf(err.Error())
|
||||
}
|
||||
|
||||
@@ -7,21 +7,21 @@ package api
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"time"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/provision"
|
||||
)
|
||||
|
||||
var _ provision.Service = (*loggingMiddleware)(nil)
|
||||
|
||||
type loggingMiddleware struct {
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
svc provision.Service
|
||||
}
|
||||
|
||||
// NewLoggingMiddleware adds logging facilities to the core service.
|
||||
func NewLoggingMiddleware(svc provision.Service, logger mglog.Logger) provision.Service {
|
||||
func NewLoggingMiddleware(svc provision.Service, logger *slog.Logger) provision.Service {
|
||||
return &loggingMiddleware{logger, svc}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,12 +6,12 @@ package api
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"log/slog"
|
||||
"net/http"
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/internal/api"
|
||||
"github.com/absmach/magistrala/internal/apiutil"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
"github.com/absmach/magistrala/provision"
|
||||
"github.com/go-chi/chi/v5"
|
||||
@@ -24,7 +24,7 @@ const (
|
||||
)
|
||||
|
||||
// MakeHandler returns a HTTP handler for API endpoints.
|
||||
func MakeHandler(svc provision.Service, logger mglog.Logger, instanceID string) http.Handler {
|
||||
func MakeHandler(svc provision.Service, logger *slog.Logger, instanceID string) http.Handler {
|
||||
opts := []kithttp.ServerOption{
|
||||
kithttp.ServerErrorEncoder(apiutil.LoggingErrorEncoder(logger, api.EncodeError)),
|
||||
}
|
||||
|
||||
@@ -6,8 +6,8 @@ package provision
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
sdk "github.com/absmach/magistrala/pkg/sdk/go"
|
||||
)
|
||||
@@ -70,7 +70,7 @@ type Service interface {
|
||||
}
|
||||
|
||||
type provisionService struct {
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
sdk sdk.SDK
|
||||
conf Config
|
||||
}
|
||||
@@ -87,7 +87,7 @@ type Result struct {
|
||||
}
|
||||
|
||||
// New returns new provision service.
|
||||
func New(cfg Config, mgsdk sdk.SDK, logger mglog.Logger) Service {
|
||||
func New(cfg Config, mgsdk sdk.SDK, logger *slog.Logger) Service {
|
||||
return &provisionService{
|
||||
logger: logger,
|
||||
conf: cfg,
|
||||
|
||||
@@ -7,21 +7,21 @@ package api
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"time"
|
||||
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/readers"
|
||||
)
|
||||
|
||||
var _ readers.MessageRepository = (*loggingMiddleware)(nil)
|
||||
|
||||
type loggingMiddleware struct {
|
||||
logger mglog.Logger
|
||||
logger *slog.Logger
|
||||
svc readers.MessageRepository
|
||||
}
|
||||
|
||||
// LoggingMiddleware adds logging facilities to the core service.
|
||||
func LoggingMiddleware(svc readers.MessageRepository, logger mglog.Logger) readers.MessageRepository {
|
||||
func LoggingMiddleware(svc readers.MessageRepository, logger *slog.Logger) readers.MessageRepository {
|
||||
return &loggingMiddleware{
|
||||
logger: logger,
|
||||
svc: svc,
|
||||
|
||||
@@ -14,7 +14,7 @@ import (
|
||||
"github.com/ory/dockertest/v3"
|
||||
)
|
||||
|
||||
var logger, _ = mglog.New(os.Stdout, mglog.Info.String())
|
||||
var logger, _ = mglog.New(os.Stdout, "info")
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
pool, err := dockertest.NewPool("")
|
||||
@@ -46,7 +46,7 @@ func TestMain(m *testing.M) {
|
||||
|
||||
return nil
|
||||
}); err != nil {
|
||||
logger.Fatal(fmt.Sprintf("Could not connect to docker: %s", err))
|
||||
logger.Error(fmt.Sprintf("Could not connect to docker: %s", err))
|
||||
}
|
||||
|
||||
code := m.Run()
|
||||
|
||||
@@ -19,7 +19,7 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
testLog, _ = mglog.New(os.Stdout, mglog.Info.String())
|
||||
testLog, _ = mglog.New(os.Stdout, "info")
|
||||
address string
|
||||
)
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ import (
|
||||
"go.mongodb.org/mongo-driver/mongo/options"
|
||||
)
|
||||
|
||||
var testLog, _ = mglog.New(os.Stdout, mglog.Info.String())
|
||||
var testLog, _ = mglog.New(os.Stdout, "info")
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
pool, err := dockertest.NewPool("")
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user