diff --git a/go.mod b/go.mod index 29dade4a1b62b503877e60605938b9af5c836400..422d1698b0a1d3589a051c5ff5f489bd3ea20c9c 100644 --- a/go.mod +++ b/go.mod @@ -5,6 +5,7 @@ go 1.23.0 require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 github.com/stretchr/testify v1.9.0 + go.elastic.co/ecslogrus v1.0.0 google.golang.org/grpc v1.64.0 gopkg.in/yaml.v3 v3.0.1 ) @@ -12,13 +13,15 @@ require ( require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/kr/text v0.2.0 // indirect + github.com/magefile/mage v1.9.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect + github.com/sirupsen/logrus v1.9.3 // indirect golang.org/x/net v0.26.0 // indirect golang.org/x/sys v0.21.0 // indirect golang.org/x/text v0.16.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240513163218-0867130af1f8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8 // indirect - google.golang.org/protobuf v1.34.2 // indirect google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.4.0 // indirect + google.golang.org/protobuf v1.34.2 // indirect ) diff --git a/go.sum b/go.sum index a45d8abbc04dd9e184f0c7dc75be44c5a78bae4e..c7bb24c441208d9bd4ed4d80f3d616028ae84aa7 100644 --- a/go.sum +++ b/go.sum @@ -1,22 +1,41 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/magefile/mage v1.9.0 h1:t3AU2wNwehMCW97vuqQLtw6puppWXHO+O2MHo5a50XE= +github.com/magefile/mage v1.9.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.5.0/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +go.elastic.co/ecslogrus v1.0.0 h1:o1qvcCNaq+eyH804AuK6OOiUupLIXVDfYjDtSLPwukM= +go.elastic.co/ecslogrus v1.0.0/go.mod h1:vMdpljurPbwu+iFmNc/HSWCkn1Fu/dYde1o/adaEczo= golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= @@ -27,12 +46,15 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8/go.mod h1:I7Y+G38R2bu5j1aLzfFmQfTcU/WnFuqDwLZAbvKTKpM= google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.4.0 h1:9SxA29VM43MF5Z9dQu694wmY5t8E/Gxr7s+RSxiIDmc= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.4.0/go.mod h1:yZOK5zhQMiALmuweVdIVoQPa6eIJyXn2B9g5dJDhqX4= google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.4.0 h1:9SxA29VM43MF5Z9dQu694wmY5t8E/Gxr7s+RSxiIDmc= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.4.0/go.mod h1:yZOK5zhQMiALmuweVdIVoQPa6eIJyXn2B9g5dJDhqX4= diff --git a/internal/config/config.go b/internal/config/config.go index 8a668af900963f92a2a1131a9bee4c4f138dce5d..65eb7f9b6fdcb73214557e88c6e281938293d471 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -28,7 +28,8 @@ package config import ( "fmt" "gopkg.in/yaml.v3" - "log" + log "github.com/sirupsen/logrus" + "go.elastic.co/ecslogrus" "os" "testing" ) @@ -61,6 +62,7 @@ type Config struct { func LoadConfig(configFilePath ...string) Config { var config Config + log.SetFormatter(&ecslogrus.Formatter{}) configFile := defaultConfig diff --git a/internal/logging/logger.go b/internal/logging/logger.go deleted file mode 100644 index f37932b73352d551789403462e99675969dd1365..0000000000000000000000000000000000000000 --- a/internal/logging/logger.go +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (C) 2023-2024 - * Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ - -package logging - -import ( - "antragsraum-proxy/internal/config" - "fmt" - "log" - "os" - "sync" -) - -const ( - logLevelNumError = iota - logLevelNumWarning - logLevelNumInfo - logLevelNumDebug - LogLevelError = "ERROR" - LogLevelWarning = "WARN" - LogLevelInfo = "INFO" - LogLevelDebug = "DEBUG" -) - -type Logger struct { - BaseLogger *log.Logger - level int -} - -var ( - logger *Logger - once sync.Once -) - -func GetLogger() *Logger { - initializeLogger() - - return logger -} - -func initializeLogger() { - once.Do(func() { - logger = &Logger{ - BaseLogger: log.New(os.Stdout, "", log.LstdFlags), - level: getLoggingLevel(), - } - }) -} - -func getLoggingLevel() int { - logLevelMap := map[string]int{ - LogLevelError: logLevelNumError, - LogLevelWarning: logLevelNumWarning, - LogLevelInfo: logLevelNumInfo, - LogLevelDebug: logLevelNumDebug, - } - - conf := config.LoadConfig() - logLevel, exists := logLevelMap[conf.Logging.Level] - if !exists { - logLevel = logLevelMap[LogLevelInfo] - } - - return logLevel -} - -func (l *Logger) log(level int, prefix, format string, v ...any) { - if l.level >= level { - l.BaseLogger.Println(fmt.Sprintf("%v: %v", prefix, fmt.Sprintf(format, v...))) - } -} - -func (l *Logger) Fatal(format string, v ...any) { - l.BaseLogger.Fatalln(fmt.Sprintf("FATAL: "+format, v...)) -} - -func (l *Logger) Error(format string, v ...any) { - l.log(logLevelNumError, "ERROR", format, v...) -} - -func (l *Logger) Warning(format string, v ...any) { - l.log(logLevelNumWarning, "WARNING", format, v...) -} - -func (l *Logger) Info(format string, v ...any) { - l.log(logLevelNumInfo, "INFO", format, v...) -} - -func (l *Logger) Debug(format string, v ...any) { - l.log(logLevelNumDebug, "DEBUG", format, v...) -} diff --git a/internal/logging/logger_test.go b/internal/logging/logger_test.go deleted file mode 100644 index f0b209ca5d6f61b82ae3e38d3ef1316c8980c1f2..0000000000000000000000000000000000000000 --- a/internal/logging/logger_test.go +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (C) 2023-2024 - * Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ - -package logging - -import ( - "bytes" - "github.com/stretchr/testify/assert" - "testing" -) - -func logMessage(level string, msg string) *bytes.Buffer { - logger := GetLogger() - - var buf bytes.Buffer - logger.BaseLogger.SetOutput(&buf) - - originalFlags := logger.BaseLogger.Flags() - defer func() { - logger.BaseLogger.SetOutput(nil) - logger.BaseLogger.SetFlags(originalFlags) - }() - - if level == LogLevelError { - logger.Error(msg) - } else if level == LogLevelWarning { - logger.Warning(msg) - } else if level == LogLevelInfo { - logger.Info(msg) - } else { - logger.Debug(msg) - } - - return &buf -} - -func TestError(t *testing.T) { - buf := logMessage(LogLevelError, "test error") - - assert.Contains(t, buf.String(), "ERROR: test error") -} - -func TestWarning(t *testing.T) { - buf := logMessage(LogLevelWarning, "test warning") - - assert.Contains(t, buf.String(), "WARNING: test warning") -} - -func TestInfo(t *testing.T) { - buf := logMessage(LogLevelInfo, "test info") - - assert.Contains(t, buf.String(), "INFO: test info") -} - -func TestDebug(t *testing.T) { - buf := logMessage(LogLevelDebug, "test debug") - - assert.Empty(t, buf.String()) -} diff --git a/internal/logging/testdata/config.yml b/internal/logging/testdata/config.yml deleted file mode 100755 index c82f00915da1dac6dc64101fcec262d984848323..0000000000000000000000000000000000000000 --- a/internal/logging/testdata/config.yml +++ /dev/null @@ -1,10 +0,0 @@ -http: - server: - port: 8082 -grpc: - server: - port: 50052 - router: - port: 50051 -logging: - level: "INFO" \ No newline at end of file diff --git a/internal/mock/globals.go b/internal/mock/globals.go index e3ed159d43c9daf900849cbaaec3415e10907cfa..83da2eaa8ca203bb140f6515df542ac60ba583f6 100644 --- a/internal/mock/globals.go +++ b/internal/mock/globals.go @@ -2,8 +2,6 @@ package mock import ( "antragsraum-proxy/internal/config" - "antragsraum-proxy/internal/logging" ) var conf = config.LoadConfig() -var logger = logging.GetLogger() diff --git a/internal/mock/grpc_server.go b/internal/mock/grpc_server.go index 5dcb18f9b9e8237ac3274086ab8244c24b027bac..c47e3c42084e61c7717cd73683e274bb56a2de50 100644 --- a/internal/mock/grpc_server.go +++ b/internal/mock/grpc_server.go @@ -26,6 +26,7 @@ package mock import ( + log "github.com/sirupsen/logrus" pb "antragsraum-proxy/gen/go" "context" "fmt" @@ -151,12 +152,12 @@ func StartGrpcServer() *grpc.Server { lis, err := net.Listen("tcp", fmt.Sprintf(":%d", conf.Grpc.Server.Port)) if err != nil { - logger.Fatal("gRPC server failed to listen: %v", err) + log.Fatal(fmt.Sprintf("gRPC server failed to listen: %v", err)) } - logger.Info("gRPC server listening on port %v", conf.Grpc.Server.Port) + log.Info(fmt.Sprintf("gRPC server listening on port %v", conf.Grpc.Server.Port)) if err := s.Serve(lis); err != nil { - logger.Fatal("gRPC server failed to serve: %v", err) + log.Fatal(fmt.Sprintf("gRPC server failed to serve: %v", err)) } return s diff --git a/internal/server/globals.go b/internal/server/globals.go index 4e832f3ef72522d0c28d434dd1724fdc93c8b0ca..315c9cbaf3fe0602cf8704875f97b528b3042ad8 100644 --- a/internal/server/globals.go +++ b/internal/server/globals.go @@ -2,7 +2,6 @@ package server import ( "antragsraum-proxy/internal/config" - "antragsraum-proxy/internal/logging" ) const ( @@ -11,4 +10,3 @@ const ( ) var conf = config.LoadConfig() -var logger = logging.GetLogger() diff --git a/internal/server/grpc_router.go b/internal/server/grpc_router.go index 3a1cb4007616e3223a41e1c623cd365b4e861907..5df67e5614d5a811d73e0f0d6f46bc98cb74dbfd 100644 --- a/internal/server/grpc_router.go +++ b/internal/server/grpc_router.go @@ -31,6 +31,7 @@ import ( "google.golang.org/grpc/credentials/insecure" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + log "github.com/sirupsen/logrus" "net" ) @@ -94,7 +95,7 @@ func createRueckfrageClient(grpcAddress string) (pb.AntragraumServiceClient, fun target := GetGrpcServerUrl(grpcAddress, conf) conn, err := grpc.NewClient(target, grpc.WithTransportCredentials(insecure.NewCredentials())) if err != nil { - logger.Error("rueckfrage router failed to route: %v", err) + log.WithError(err).Error("rueckfrage router failed to route: %v", err) return nil, nil, errors.New("rueckfrage router failed to route") } @@ -126,7 +127,7 @@ func createCommandClient(grpcAddress string) (pb.CommandServiceClient, func() er target := GetGrpcServerUrl(grpcAddress, conf) conn, err := grpc.NewClient(target, grpc.WithTransportCredentials(insecure.NewCredentials())) if err != nil { - logger.Error("command router failed to route: %v", err) + log.Error(fmt.Sprintf("command router failed to route: %v", err)) return nil, nil, errors.New("command router failed to route") } @@ -169,12 +170,12 @@ func StartGrpcRouter() *grpc.Server { lis, err := net.Listen("tcp", fmt.Sprintf(":%d", conf.Grpc.Router.Port)) if err != nil { - logger.Fatal("gRPC router failed to listen: %v", err) + log.Fatal(fmt.Sprintf("gRPC router failed to listen: %v", err)) } - logger.Info("gRPC router listening on port %d", conf.Grpc.Router.Port) + log.Info(fmt.Sprintf("gRPC router listening on port %d", conf.Grpc.Router.Port)) if err = s.Serve(lis); err != nil { - logger.Fatal("gRPC router failed to serve: %v", err) + log.Fatal(fmt.Sprintf("gRPC router failed to serve: %v", err)) } return s diff --git a/internal/server/handler.go b/internal/server/handler.go index dcceaf6bb95cd47ec2abfa43f57c8c1d5704d2dd..cfce1a9d0b8f0ab5d24abf4e26ccb7d60c64301d 100644 --- a/internal/server/handler.go +++ b/internal/server/handler.go @@ -26,6 +26,7 @@ package server import ( + log "github.com/sirupsen/logrus" pb "antragsraum-proxy/gen/go" "bytes" "context" @@ -53,14 +54,14 @@ func RegisterHomeEndpoint(mux *runtime.ServeMux) { err := mux.HandlePath("GET", "/", func(w http.ResponseWriter, r *http.Request, pathParams map[string]string) { defer func() { if err := recover(); err != nil { - logger.Error("failed to recover: %v", err) + log.Error(fmt.Sprintf("failed to recover: %v", err)) http.Error(w, fmt.Sprintf("failed to recover: %v", err), http.StatusInternalServerError) } }() }) if err != nil { - logger.Fatal("failed to register home endpoint: %v", err) + log.Fatal(fmt.Sprintf("failed to register home endpoint: %v", err)) } } @@ -68,7 +69,7 @@ func RegisterAntragraumEndpoints(ctx context.Context, mux *runtime.ServeMux, grp opts := []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials())} err := pb.RegisterAntragraumServiceHandlerFromEndpoint(ctx, mux, grpcUrl, opts) if err != nil { - logger.Fatal("failed to register antragraum endpoints: %v", err) + log.Fatal(fmt.Sprintf("failed to register antragraum endpoints: %v", err)) } } @@ -76,7 +77,7 @@ func RegisterCommandEndpoints(ctx context.Context, mux *runtime.ServeMux, grpcUr opts := []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials())} err := pb.RegisterCommandServiceHandlerFromEndpoint(ctx, mux, grpcUrl, opts) if err != nil { - logger.Fatal("failed to register command endpoints: %v", err) + log.Fatal(fmt.Sprintf("failed to register command endpoints: %v", err)) } } @@ -84,7 +85,7 @@ func RegisterUploadAttachmentEndpoint(mux *runtime.ServeMux) { err := mux.HandlePath("POST", "/api/v1/file", attachmentUploadHandler) if err != nil { - logger.Fatal("failed to register file upload endpoint: %v", err) + log.Fatal(fmt.Sprintf("failed to register file upload endpoint: %v", err)) } } @@ -190,7 +191,7 @@ func RegisterGetAttachmentContentEndpoint(mux *runtime.ServeMux) { err := mux.HandlePath("POST", "/api/v1/file/content", getAttachmentContentHandler) if err != nil { - logger.Fatal("failed to register get file endpoint: %v", err) + log.Fatal(fmt.Sprintf("failed to register get file endpoint: %v", err)) } } @@ -288,6 +289,6 @@ func ErrorHandler(ctx context.Context, mux *runtime.ServeMux, marshaler runtime. _, writeErr := w.Write([]byte(st.Message())) if writeErr != nil { - logger.Fatal("failed to handle grpc error: %v", writeErr) + log.Fatal(fmt.Sprintf("failed to handle grpc error: %v", writeErr)) } } diff --git a/internal/server/http_gateway.go b/internal/server/http_gateway.go index 22d600e5d9a91ff4fb9caa6349a08be6ee1d9236..af1c870e280ccb7046d105a9bd22646ce6a4033a 100644 --- a/internal/server/http_gateway.go +++ b/internal/server/http_gateway.go @@ -29,7 +29,7 @@ import ( "context" "fmt" "net/http" - + log "github.com/sirupsen/logrus" "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "google.golang.org/grpc/metadata" ) @@ -62,9 +62,9 @@ func StartHttpGateway() *http.Server { Handler: RequestLoggingMiddleware(mux), } - logger.Info("HTTP gateway listening on port %d", conf.Http.Server.Port) + log.Info(fmt.Sprintf("HTTP gateway listening on port %d", conf.Http.Server.Port)) if err := httpServer.ListenAndServe(); err != nil { - logger.Fatal("HTTP gateway failed to serve: %v", err) + log.Fatal(fmt.Sprintf("HTTP gateway failed to serve: %v", err)) } return httpServer diff --git a/internal/server/middleware.go b/internal/server/middleware.go index 41710750de6006fed161507fd8ba65846ef1601b..e92479864b281cf44d22f0b8cac9f8620306fa85 100644 --- a/internal/server/middleware.go +++ b/internal/server/middleware.go @@ -30,6 +30,7 @@ import ( "fmt" "io" "net/http" + log "github.com/sirupsen/logrus" ) const HomeUrlPath = "/" @@ -53,21 +54,21 @@ func RequestLoggingMiddleware(h http.Handler) http.Handler { body, err := io.ReadAll(r.Body) if err != nil { - logger.Error("failed to read %v request body for %v: %v", r.Method, r.URL.Path, err) + log.Error(fmt.Sprintf("failed to read %v request body for %v: %v", r.Method, r.URL.Path, err)) http.Error(w, fmt.Sprintf("failed to read request body: %v", err), http.StatusBadRequest) return } r.Body = io.NopCloser(bytes.NewReader(body)) - logger.Debug("received %v request for %v with body: %v", r.Method, r.URL.Path, string(body)) + log.Debug(fmt.Sprintf("received %v request for %v with body: %v", r.Method, r.URL.Path, string(body))) lw := &logResponseWriter{w, http.StatusOK} h.ServeHTTP(lw, r) if lw.statusCode == http.StatusOK { - logger.Debug("successfully handled %v request for %v with body: %v", r.Method, r.URL.Path, string(body)) + log.Debug(fmt.Sprintf("successfully handled %v request for %v with body: %v", r.Method, r.URL.Path, string(body))) } else { - logger.Error("failed handling %v request for %v with body: %v, status code: %d", r.Method, r.URL.Path, string(body), lw.statusCode) + log.Error(fmt.Sprintf("failed handling %v request for %v with body: %v, status code: %d", r.Method, r.URL.Path, string(body), lw.statusCode)) } }) }