From 5cedaca28462ea5cc628ae2ba52bda2c573cdb9d Mon Sep 17 00:00:00 2001 From: Carlos Rodriguez-Fernandez Date: Mon, 19 Aug 2024 10:36:52 -0700 Subject: [PATCH] feat(operator): allow to set log level Fixes: #1566 Signed-off-by: Carlos Rodriguez-Fernandez --- pkg/KubeArmorOperator/cmd/operator/main.go | 11 ++++++++++- pkg/KubeArmorOperator/cmd/snitch-cmd/main.go | 11 ++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/pkg/KubeArmorOperator/cmd/operator/main.go b/pkg/KubeArmorOperator/cmd/operator/main.go index b455935db8..95f87fda88 100644 --- a/pkg/KubeArmorOperator/cmd/operator/main.go +++ b/pkg/KubeArmorOperator/cmd/operator/main.go @@ -13,6 +13,7 @@ import ( "github.com/kubearmor/KubeArmor/pkg/KubeArmorOperator/k8s" "github.com/spf13/cobra" "go.uber.org/zap" + "go.uber.org/zap/zapcore" apiextensionsclientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset" "k8s.io/client-go/kubernetes" "k8s.io/client-go/util/homedir" @@ -28,11 +29,18 @@ var DeploymentName string var ExtClient *apiextensionsclientset.Clientset var Opv1Client *opv1client.Clientset var InitDeploy bool +var LogLevel string // Cmd represents the base command when called without any subcommands var Cmd = &cobra.Command{ PersistentPreRunE: func(cmd *cobra.Command, args []string) error { - log, _ := zap.NewProduction() + level, err := zapcore.ParseLevel(LogLevel) + if err != nil { + return errors.New("unable to parse log level") + } + config := zap.NewProductionConfig() + config.Level.SetLevel(level) + log, _ := config.Build() Logger = log.Sugar() K8sClient = k8s.NewClient(*Logger, KubeConfig) ExtClient = k8s.NewExtClient(*Logger, KubeConfig) @@ -72,6 +80,7 @@ func init() { Cmd.PersistentFlags().StringVar(&DeploymentName, "deploymentName", "kubearmor-operator", "operator deployment name") // TODO:- set initDeploy to false by default once this change is added to stable Cmd.PersistentFlags().BoolVar(&InitDeploy, "initDeploy", true, "Init container deployment") + Cmd.PersistentFlags().StringVar(&LogLevel, "loglevel", "info", "log level, e.g., debug, info, warn, error") } // Execute adds all child commands to the root command and sets flags appropriately. diff --git a/pkg/KubeArmorOperator/cmd/snitch-cmd/main.go b/pkg/KubeArmorOperator/cmd/snitch-cmd/main.go index 2ed1af48b5..cc3413e4b2 100644 --- a/pkg/KubeArmorOperator/cmd/snitch-cmd/main.go +++ b/pkg/KubeArmorOperator/cmd/snitch-cmd/main.go @@ -20,6 +20,7 @@ import ( runtimepkg "github.com/kubearmor/KubeArmor/pkg/KubeArmorOperator/runtime" "github.com/spf13/cobra" "go.uber.org/zap" + "go.uber.org/zap/zapcore" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/rand" @@ -43,11 +44,18 @@ var LsmOrder string var PathPrefix string = "/rootfs" var NodeName string var Runtime string +var LogLevel string // Cmd represents the base command when called without any subcommands var Cmd = &cobra.Command{ PersistentPreRunE: func(cmd *cobra.Command, args []string) error { - log, _ := zap.NewProduction() + level, err := zapcore.ParseLevel(LogLevel) + if err != nil { + return errors.New("unable to parse log level") + } + config := zap.NewProductionConfig() + config.Level.SetLevel(level) + log, _ := config.Build() Logger = log.Sugar() K8sClient = k8s.NewClient(*Logger, KubeConfig) //Initialise k8sClient for all child commands to inherit @@ -87,6 +95,7 @@ func init() { Cmd.PersistentFlags().StringVar(&NodeName, "nodename", "", "node name to label") Cmd.PersistentFlags().StringVar(&PathPrefix, "pathprefix", "/rootfs", "path prefix for runtime search") Cmd.PersistentFlags().StringVar(&Runtime, "runtime", "", "runtime detected by k8s") + Cmd.PersistentFlags().StringVar(&LogLevel, "loglevel", "info", "log level, e.g., debug, info, warn, error") } // Execute adds all child commands to the root command and sets flags appropriately.