From 1963bad6b4fdd5803bbb306e42c741de90ceff6e Mon Sep 17 00:00:00 2001 From: Kay Date: Wed, 8 Jan 2025 18:16:13 +0000 Subject: [PATCH] feat(utils/logger): adding log system. --- cmd/commands/utils.go | 5 +++-- cmd/relay/relay.go | 4 ---- delivery/grpc/server.go | 20 ++++++++++---------- delivery/websocket/server.go | 12 ++++++------ infrastructure/database/database.go | 15 ++++++++++++--- infrastructure/redis/redis.go | 9 +++++++++ 6 files changed, 40 insertions(+), 25 deletions(-) diff --git a/cmd/commands/utils.go b/cmd/commands/utils.go index b974b1d..69452d1 100644 --- a/cmd/commands/utils.go +++ b/cmd/commands/utils.go @@ -1,11 +1,12 @@ package commands import ( - "log" "os" + + "github.com/dezh-tech/immortal/pkg/logger" ) func ExitOnError(err error) { - log.Printf("immortal error: %s\n", err.Error()) //nolint + logger.Error("immortal error", "err", err.Error()) os.Exit(1) } diff --git a/cmd/relay/relay.go b/cmd/relay/relay.go index a60a179..ccfcfae 100644 --- a/cmd/relay/relay.go +++ b/cmd/relay/relay.go @@ -102,8 +102,6 @@ func (r *Relay) Start() chan error { } }() - logger.Info("relay started successfully") - return errCh } @@ -123,7 +121,5 @@ func (r *Relay) Stop() error { return err } - logger.Info("relay stopped successfully") - return nil } diff --git a/delivery/grpc/server.go b/delivery/grpc/server.go index 42b83ff..de31b09 100644 --- a/delivery/grpc/server.go +++ b/delivery/grpc/server.go @@ -2,7 +2,6 @@ package grpc import ( "context" - "log" "net" "strconv" "time" @@ -10,6 +9,7 @@ import ( rpb "github.com/dezh-tech/immortal/delivery/grpc/gen" "github.com/dezh-tech/immortal/infrastructure/database" "github.com/dezh-tech/immortal/infrastructure/redis" + "github.com/dezh-tech/immortal/pkg/logger" "google.golang.org/grpc" ) @@ -44,8 +44,6 @@ func (s *Server) Start() error { return err } - log.Println("grpc server started...") - grpcServer := grpc.NewServer(grpc.ChainUnaryInterceptor()) healthServer := newHealthServer(s) @@ -55,18 +53,20 @@ func (s *Server) Start() error { s.listener = listener s.grpc = grpcServer - return s.grpc.Serve(listener) + logger.Info("gRPC server started successfully", "listen", listener.Addr().String()) + + if err := s.grpc.Serve(listener); err != nil { + return err + } + + return nil } func (s *Server) Stop() error { - s.cancel() - - log.Println("grpc server stopped...") + logger.Info("stopping gRPC server") + s.cancel() s.grpc.Stop() - if err := s.listener.Close(); err != nil { - return err - } return nil } diff --git a/delivery/websocket/server.go b/delivery/websocket/server.go index c270b9c..0fabc0c 100644 --- a/delivery/websocket/server.go +++ b/delivery/websocket/server.go @@ -49,13 +49,15 @@ func New(cfg Config, h *repository.Handler, m *metrics.Metrics, // Start starts a new server instance. func (s *Server) Start() error { - logger.Info("starting websocket server") - go s.checkExpiration() + addr := net.JoinHostPort(s.config.Bind, //nolint + strconv.Itoa(int(s.config.Port))) + + logger.Info("websocket server started", "listen", addr) + http.Handle("/", s) - err := http.ListenAndServe(net.JoinHostPort(s.config.Bind, //nolint - strconv.Itoa(int(s.config.Port))), nil) + err := http.ListenAndServe(addr, nil) return err } @@ -175,7 +177,5 @@ func (s *Server) Stop() error { client.Unlock() } - logger.Info("websocket server stopped successfully") - return nil } diff --git a/infrastructure/database/database.go b/infrastructure/database/database.go index 5d2a8e0..0d4ccd3 100644 --- a/infrastructure/database/database.go +++ b/infrastructure/database/database.go @@ -2,9 +2,9 @@ package database import ( "context" - "log" "time" + "github.com/dezh-tech/immortal/pkg/logger" "github.com/dezh-tech/immortal/types" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" @@ -18,6 +18,8 @@ type Database struct { } func Connect(cfg Config) (*Database, error) { + logger.Info("connecting to database") + ctx, cancel := context.WithTimeout(context.Background(), time.Duration(cfg.ConnectionTimeout)*time.Millisecond) defer cancel() @@ -55,6 +57,9 @@ func Connect(cfg Config) (*Database, error) { if err != nil { cancel() + // todo::: skip `Index already exists with a different name` errors. + logger.Error("can't create index for id field", "err", err) + continue } cancel() @@ -68,7 +73,11 @@ func Connect(cfg Config) (*Database, error) { } func (db *Database) Stop() error { - log.Println("closing database connection...") + logger.Info("closing database connection") + + if err := db.Client.Disconnect(context.Background()); err != nil { + return err + } - return db.Client.Disconnect(context.Background()) + return nil } diff --git a/infrastructure/redis/redis.go b/infrastructure/redis/redis.go index 3045a5a..cba9bcc 100644 --- a/infrastructure/redis/redis.go +++ b/infrastructure/redis/redis.go @@ -5,6 +5,7 @@ import ( "fmt" "time" + "github.com/dezh-tech/immortal/pkg/logger" "github.com/redis/go-redis/v9" ) @@ -18,6 +19,8 @@ type Redis struct { } func New(cfg Config) (*Redis, error) { + logger.Info("connecting to redis") + opts, err := redis.ParseURL(cfg.URI) if err != nil { return nil, err @@ -43,6 +46,12 @@ func New(cfg Config) (*Redis, error) { }, nil } +func (r *Redis) Close() error { + logger.Info("closing redis connection") + + return r.Client.Close() +} + // ! note: delayed tasks probably are not concurrent safe at the moment. func (r *Redis) AddDelayedTask(listName string, data string, delay time.Duration,