Add proper logging

This commit is contained in:
2021-12-06 07:55:30 +01:00
parent 6f91ac3d2d
commit 80b6281564
8 changed files with 147 additions and 23 deletions

View File

@@ -5,7 +5,6 @@ import (
"crypto/tls"
"crypto/x509"
"fmt"
"log"
"net"
"net/http"
"os"
@@ -19,6 +18,7 @@ import (
"gitea.benny.dog/torjus/ezshare/store"
"github.com/google/uuid"
"github.com/urfave/cli/v2"
"go.uber.org/zap"
"golang.org/x/crypto/bcrypt"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
@@ -29,6 +29,10 @@ func ActionServe(c *cli.Context) error {
if err != nil {
return err
}
logger := cfg.Server.GetLogger()
serverLogger := logger.Named("SERV")
authLogger := logger.Named("AUTH")
httpLogger := logger.Named("HTTP")
// Read certificates
srvCertBytes, err := cfg.Server.GRPC.Certs.GetCertBytes()
@@ -63,7 +67,7 @@ func ActionServe(c *cli.Context) error {
defer userCloseFunc()
// Create initial admin-user if neccessary
if err := initializeUsers(userStore); err != nil {
if err := initializeUsers(userStore, serverLogger); err != nil {
return fmt.Errorf("error initializing store: %w", err)
}
@@ -99,26 +103,28 @@ func ActionServe(c *cli.Context) error {
// Setup file-service
grpcFileServer := server.NewGRPCFileServiceServer(s)
grpcFileServer.Hostname = cfg.Server.Hostname
grpcFileServer.Logger = logger.Named("FILE")
if c.IsSet("hostname") {
grpcFileServer.Hostname = c.String("hostname")
}
// Setup user-service
grpcUserServer := server.NewGRPCUserServiceServer(userStore, certSvc)
grpcUserServer.Logger = logger.Named("USER")
lis, err := net.Listen("tcp", grpcAddr)
if err != nil {
log.Printf("Unable to setup grpc listener: %s\n", err)
serverLogger.Errorw("Unable to setup GRPC listener.", "error", err)
rootCancel()
}
srvCert, err := tls.X509KeyPair(srvCertBytes, srvKeyBytes)
if err != nil {
log.Printf("Unable load server certs: %s\n", err)
serverLogger.Errorw("Unable to load server certs.", "error", err)
rootCancel()
}
certPool := x509.NewCertPool()
if !certPool.AppendCertsFromPEM(caCertBytes) {
log.Println("Unable to load CA cert")
serverLogger.Errorw("Unable to load CA certs.")
rootCancel()
}
tlsConfig := &tls.Config{
@@ -130,7 +136,7 @@ func ActionServe(c *cli.Context) error {
grpcServer := grpc.NewServer(
grpc.Creds(creds),
grpc.ChainUnaryInterceptor(interceptors.NewAuthInterceptor(userStore)),
grpc.ChainUnaryInterceptor(interceptors.NewAuthInterceptor(userStore, authLogger)),
)
pb.RegisterFileServiceServer(grpcServer, grpcFileServer)
pb.RegisterUserServiceServer(grpcServer, grpcUserServer)
@@ -141,12 +147,12 @@ func ActionServe(c *cli.Context) error {
grpcServer.GracefulStop()
}()
log.Printf("Starting grpc server")
serverLogger.Info("Starting GRPC server.")
if err = grpcServer.Serve(lis); err != nil {
log.Printf("GRPC Shutdown with error: %s\n", err)
serverLogger.Warnw("GRPC shutdown with error", "error", err)
rootCancel()
}
log.Println("GRPC Shutdown")
serverLogger.Info("GRPC shutdown.")
grpcShutdownCancel()
}()
@@ -162,6 +168,7 @@ func ActionServe(c *cli.Context) error {
httpAddr = c.String("http-addr")
}
httpServer := server.NewHTTPSever(s, srvCertBytes, cfg.Server.GRPCEndpoint)
httpServer.Logger = httpLogger
httpServer.Addr = httpAddr
// wait for cancel
@@ -173,12 +180,12 @@ func ActionServe(c *cli.Context) error {
httpServer.Shutdown(timeoutCtx)
}()
log.Printf("Starting http server")
serverLogger.Info("Starting HTTP server.")
if err := httpServer.ListenAndServe(); err != nil && err != http.ErrServerClosed {
log.Printf("HTTP Server shutdown with error: %s\n", err)
serverLogger.Warnw("HTTP server shutdown with error.", "error", err)
rootCancel()
}
log.Println("HTTP Shutdown")
serverLogger.Info("HTTP server shutdown.")
httpShutdownCancel()
}()
@@ -187,7 +194,7 @@ func ActionServe(c *cli.Context) error {
return nil
}
func initializeUsers(us store.UserStore) error {
func initializeUsers(us store.UserStore, logger *zap.SugaredLogger) error {
// TODO: Logging
userIDs, err := us.ListUsers()
if err != nil {
@@ -199,7 +206,6 @@ func initializeUsers(us store.UserStore) error {
}
// no users, create initial admin-user
log.Printf("No users in store. Creating admin-user.")
password := uuid.Must(uuid.NewRandom()).String()
hashedPassword, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
if err != nil {
@@ -216,7 +222,7 @@ func initializeUsers(us store.UserStore) error {
if err := us.StoreUser(admin); err != nil {
return err
}
log.Printf("user created with id %s:%s", admin.Username, password)
logger.Infow("Created admin user.", "username", admin.Username, "password", password)
return nil
}