cloudapi: use Logrus as default logger in Echo

And remove log.Logger references
This commit is contained in:
Diaa Sami 2021-09-24 15:17:21 +02:00 committed by Sanne Raymaekers
parent 75372b98e1
commit 179009fec4
9 changed files with 198 additions and 15 deletions

View file

@ -103,7 +103,7 @@ func (c *Composer) InitWeldr(repoPaths []string, weldrListener net.Listener,
} }
func (c *Composer) InitAPI(cert, key string, enableJWT bool, l net.Listener) error { func (c *Composer) InitAPI(cert, key string, enableJWT bool, l net.Listener) error {
c.api = cloudapi.NewServer(c.logger, c.workers, c.rpm, c.distros) c.api = cloudapi.NewServer(c.workers, c.rpm, c.distros)
c.koji = kojiapi.NewServer(c.logger, c.workers, c.rpm, c.distros) c.koji = kojiapi.NewServer(c.logger, c.workers, c.rpm, c.distros)
clientAuth := tls.RequireAndVerifyClientCert clientAuth := tls.RequireAndVerifyClientCert

View file

@ -35,6 +35,7 @@ type ComposerConfigFile struct {
JWTACLFile string `toml:"jwt_acl_file"` JWTACLFile string `toml:"jwt_acl_file"`
} `toml:"composer_api"` } `toml:"composer_api"`
WeldrAPI WeldrAPIConfig `toml:"weldr_api"` WeldrAPI WeldrAPIConfig `toml:"weldr_api"`
logLevel string `toml:"log_level"`
} }
type WeldrAPIConfig struct { type WeldrAPIConfig struct {

View file

@ -6,6 +6,7 @@ import (
"os" "os"
"github.com/coreos/go-systemd/activation" "github.com/coreos/go-systemd/activation"
"github.com/sirupsen/logrus"
) )
const ( const (
@ -34,10 +35,19 @@ func main() {
if os.IsNotExist(err) { if os.IsNotExist(err) {
config = &ComposerConfigFile{} config = &ComposerConfigFile{}
} else { } else {
log.Fatalf("Error loading configuration: %v", err) logrus.Fatalf("Error loading configuration: %v", err)
} }
} }
logrus.SetOutput(os.Stdout)
logLevel, err := logrus.ParseLevel(config.logLevel)
if err == nil {
logrus.SetLevel(logLevel)
} else {
logrus.Info("Failed to load loglevel from config:", err)
}
log.Println("Loaded configuration:") log.Println("Loaded configuration:")
err = DumpConfig(config, log.Writer()) err = DumpConfig(config, log.Writer())
if err != nil { if err != nil {

1
go.mod
View file

@ -35,6 +35,7 @@ require (
github.com/julienschmidt/httprouter v1.3.0 github.com/julienschmidt/httprouter v1.3.0
github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b
github.com/labstack/echo/v4 v4.6.0 github.com/labstack/echo/v4 v4.6.0
github.com/labstack/gommon v0.3.0
github.com/openshift-online/ocm-sdk-go v0.1.208 github.com/openshift-online/ocm-sdk-go v0.1.208
github.com/prometheus/client_golang v1.11.0 github.com/prometheus/client_golang v1.11.0
github.com/prometheus/common v0.30.0 // indirect github.com/prometheus/common v0.30.0 // indirect

View file

@ -1,15 +1,14 @@
package cloudapi package cloudapi
import ( import (
"log"
"net/http" "net/http"
"github.com/osbuild/osbuild-composer/internal/distroregistry" "github.com/osbuild/osbuild-composer/internal/distroregistry"
"github.com/osbuild/osbuild-composer/internal/rpmmd" "github.com/osbuild/osbuild-composer/internal/rpmmd"
"github.com/osbuild/osbuild-composer/internal/worker" "github.com/osbuild/osbuild-composer/internal/worker"
"github.com/osbuild/osbuild-composer/internal/cloudapi/v1" v1 "github.com/osbuild/osbuild-composer/internal/cloudapi/v1"
"github.com/osbuild/osbuild-composer/internal/cloudapi/v2" v2 "github.com/osbuild/osbuild-composer/internal/cloudapi/v2"
) )
type Server struct { type Server struct {
@ -17,10 +16,10 @@ type Server struct {
v2 *v2.Server v2 *v2.Server
} }
func NewServer(logger *log.Logger, workers *worker.Server, rpmMetadata rpmmd.RPMMD, distros *distroregistry.Registry) *Server { func NewServer(workers *worker.Server, rpmMetadata rpmmd.RPMMD, distros *distroregistry.Registry) *Server {
server := &Server{ server := &Server{
v1: v1.NewServer(workers, rpmMetadata, distros), v1: v1.NewServer(workers, rpmMetadata, distros),
v2: v2.NewServer(logger, workers, rpmMetadata, distros), v2: v2.NewServer(workers, rpmMetadata, distros),
} }
return server return server
} }

View file

@ -6,7 +6,6 @@ import (
"encoding/json" "encoding/json"
"errors" "errors"
"fmt" "fmt"
"log"
"math" "math"
"math/big" "math/big"
"net/http" "net/http"
@ -31,7 +30,6 @@ import (
// Server represents the state of the cloud Server // Server represents the state of the cloud Server
type Server struct { type Server struct {
logger *log.Logger
workers *worker.Server workers *worker.Server
rpmMetadata rpmmd.RPMMD rpmMetadata rpmmd.RPMMD
distros *distroregistry.Registry distros *distroregistry.Registry
@ -43,7 +41,7 @@ type apiHandlers struct {
type binder struct{} type binder struct{}
func NewServer(logger *log.Logger, workers *worker.Server, rpmMetadata rpmmd.RPMMD, distros *distroregistry.Registry) *Server { func NewServer(workers *worker.Server, rpmMetadata rpmmd.RPMMD, distros *distroregistry.Registry) *Server {
server := &Server{ server := &Server{
workers: workers, workers: workers,
rpmMetadata: rpmMetadata, rpmMetadata: rpmMetadata,
@ -56,10 +54,9 @@ func (server *Server) Handler(path string) http.Handler {
e := echo.New() e := echo.New()
e.Binder = binder{} e.Binder = binder{}
e.HTTPErrorHandler = server.HTTPErrorHandler e.HTTPErrorHandler = server.HTTPErrorHandler
e.StdLogger = server.logger
e.Pre(common.OperationIDMiddleware) e.Pre(common.OperationIDMiddleware)
e.Use(middleware.Recover()) e.Use(middleware.Recover())
e.Logger = common.Logger()
handler := apiHandlers{ handler := apiHandlers{
server: server, server: server,

View file

@ -5,14 +5,13 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"io/ioutil" "io/ioutil"
"log"
"net/http" "net/http"
"os" "os"
"testing" "testing"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/osbuild/osbuild-composer/internal/cloudapi/v2" v2 "github.com/osbuild/osbuild-composer/internal/cloudapi/v2"
"github.com/osbuild/osbuild-composer/internal/distro/test_distro" "github.com/osbuild/osbuild-composer/internal/distro/test_distro"
distro_mock "github.com/osbuild/osbuild-composer/internal/mocks/distro" distro_mock "github.com/osbuild/osbuild-composer/internal/mocks/distro"
rpmmd_mock "github.com/osbuild/osbuild-composer/internal/mocks/rpmmd" rpmmd_mock "github.com/osbuild/osbuild-composer/internal/mocks/rpmmd"
@ -29,7 +28,7 @@ func newV2Server(t *testing.T, dir string) (*v2.Server, *worker.Server) {
require.NoError(t, err) require.NoError(t, err)
require.NotNil(t, distros) require.NotNil(t, distros)
v2Server := v2.NewServer(log.New(os.Stdout, "", 0), rpmFixture.Workers, rpm, distros) v2Server := v2.NewServer(rpmFixture.Workers, rpm, distros)
require.NotNil(t, v2Server) require.NotNil(t, v2Server)
return v2Server, rpmFixture.Workers return v2Server, rpmFixture.Workers

View file

@ -0,0 +1,175 @@
package common
import (
"encoding/json"
"io"
"github.com/labstack/gommon/log"
"github.com/sirupsen/logrus"
)
// EchoLogrusLogger extend logrus.Logger
type EchoLogrusLogger struct {
*logrus.Logger
}
var commonLogger = &EchoLogrusLogger{
Logger: logrus.StandardLogger(),
}
func Logger() *EchoLogrusLogger {
return commonLogger
}
func toEchoLevel(level logrus.Level) log.Lvl {
switch level {
case logrus.DebugLevel:
return log.DEBUG
case logrus.InfoLevel:
return log.INFO
case logrus.WarnLevel:
return log.WARN
case logrus.ErrorLevel:
return log.ERROR
}
return log.OFF
}
func (l *EchoLogrusLogger) Output() io.Writer {
return l.Out
}
func (l *EchoLogrusLogger) SetOutput(w io.Writer) {
// disable operations that would change behavior of global logrus logger.
}
func (l *EchoLogrusLogger) Level() log.Lvl {
return toEchoLevel(l.Logger.Level)
}
func (l *EchoLogrusLogger) SetLevel(v log.Lvl) {
// disable operations that would change behavior of global logrus logger.
}
func (l *EchoLogrusLogger) SetHeader(h string) {
}
func (l *EchoLogrusLogger) Prefix() string {
return ""
}
func (l *EchoLogrusLogger) SetPrefix(p string) {
}
func (l *EchoLogrusLogger) Print(i ...interface{}) {
l.Logger.Print(i...)
}
func (l *EchoLogrusLogger) Printf(format string, args ...interface{}) {
l.Logger.Printf(format, args...)
}
func (l *EchoLogrusLogger) Printj(j log.JSON) {
b, err := json.Marshal(j)
if err != nil {
panic(err)
}
l.Logger.Println(string(b))
}
func (l *EchoLogrusLogger) Debug(i ...interface{}) {
l.Logger.Debug(i...)
}
func (l *EchoLogrusLogger) Debugf(format string, args ...interface{}) {
l.Logger.Debugf(format, args...)
}
func (l *EchoLogrusLogger) Debugj(j log.JSON) {
b, err := json.Marshal(j)
if err != nil {
panic(err)
}
l.Logger.Debugln(string(b))
}
func (l *EchoLogrusLogger) Info(i ...interface{}) {
l.Logger.Info(i...)
}
func (l *EchoLogrusLogger) Infof(format string, args ...interface{}) {
l.Logger.Infof(format, args...)
}
func (l *EchoLogrusLogger) Infoj(j log.JSON) {
b, err := json.Marshal(j)
if err != nil {
panic(err)
}
l.Logger.Infoln(string(b))
}
func (l *EchoLogrusLogger) Warn(i ...interface{}) {
l.Logger.Warn(i...)
}
func (l *EchoLogrusLogger) Warnf(format string, args ...interface{}) {
l.Logger.Warnf(format, args...)
}
func (l *EchoLogrusLogger) Warnj(j log.JSON) {
b, err := json.Marshal(j)
if err != nil {
panic(err)
}
l.Logger.Warnln(string(b))
}
func (l *EchoLogrusLogger) Error(i ...interface{}) {
l.Logger.Error(i...)
}
func (l *EchoLogrusLogger) Errorf(format string, args ...interface{}) {
l.Logger.Errorf(format, args...)
}
func (l *EchoLogrusLogger) Errorj(j log.JSON) {
b, err := json.Marshal(j)
if err != nil {
panic(err)
}
l.Logger.Errorln(string(b))
}
func (l *EchoLogrusLogger) Fatal(i ...interface{}) {
l.Logger.Fatal(i...)
}
func (l *EchoLogrusLogger) Fatalf(format string, args ...interface{}) {
l.Logger.Fatalf(format, args...)
}
func (l *EchoLogrusLogger) Fatalj(j log.JSON) {
b, err := json.Marshal(j)
if err != nil {
panic(err)
}
l.Logger.Fatalln(string(b))
}
func (l *EchoLogrusLogger) Panic(i ...interface{}) {
l.Logger.Panic(i...)
}
func (l *EchoLogrusLogger) Panicf(format string, args ...interface{}) {
l.Logger.Panicf(format, args...)
}
func (l *EchoLogrusLogger) Panicj(j log.JSON) {
b, err := json.Marshal(j)
if err != nil {
panic(err)
}
l.Logger.Panicln(string(b))
}

1
vendor/modules.txt vendored
View file

@ -254,6 +254,7 @@ github.com/kr/text
github.com/labstack/echo/v4 github.com/labstack/echo/v4
github.com/labstack/echo/v4/middleware github.com/labstack/echo/v4/middleware
# github.com/labstack/gommon v0.3.0 # github.com/labstack/gommon v0.3.0
## explicit
github.com/labstack/gommon/bytes github.com/labstack/gommon/bytes
github.com/labstack/gommon/color github.com/labstack/gommon/color
github.com/labstack/gommon/log github.com/labstack/gommon/log