Skip to content

Commit 595b78f

Browse files
authored
[Feature] Enable logger overrides (#672)
1 parent a03121e commit 595b78f

File tree

4 files changed

+27
-16
lines changed

4 files changed

+27
-16
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
## [master](https://github.com/arangodb/kube-arangodb/tree/master) (N/A)
44
- Add v2alpha1 API for ArangoDeployment and ArangoDeploymentReplication
55
- Migrate CRD to apiextensions.k8s.io/v1
6+
- Add customizable log levels per service
67

78
## [1.1.2](https://github.com/arangodb/kube-arangodb/tree/1.1.2) (2020-11-11)
89
- Fix Bootstrap phase and move it under Plan

main.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ var (
9292
Run: cmdMainRun,
9393
}
9494

95-
logLevel string
95+
logLevels []string
9696
cliLog = logging.NewRootLogger()
9797
logService logging.Service
9898
serverOptions struct {
@@ -131,7 +131,7 @@ func init() {
131131
f.StringVar(&serverOptions.tlsSecretName, "server.tls-secret-name", "", "Name of secret containing tls.crt & tls.key for HTTPS server (if empty, self-signed certificate is used)")
132132
f.StringVar(&serverOptions.adminSecretName, "server.admin-secret-name", defaultAdminSecretName, "Name of secret containing username + password for login to the dashboard")
133133
f.BoolVar(&serverOptions.allowAnonymous, "server.allow-anonymous-access", false, "Allow anonymous access to the dashboard")
134-
f.StringVar(&logLevel, "log.level", defaultLogLevel, "Set initial log level")
134+
f.StringArrayVar(&logLevels, "log.level", []string{defaultLogLevel}, "Set log levels in format <level> or <logger>=<level>")
135135
f.BoolVar(&operatorOptions.enableDeployment, "operator.deployment", false, "Enable to run the ArangoDeployment operator")
136136
f.BoolVar(&operatorOptions.enableDeploymentReplication, "operator.deployment-replication", false, "Enable to run the ArangoDeploymentReplication operator")
137137
f.BoolVar(&operatorOptions.enableStorage, "operator.storage", false, "Enable to run the ArangoLocalStorage operator")
@@ -170,7 +170,7 @@ func cmdMainRun(cmd *cobra.Command, args []string) {
170170

171171
// Prepare log service
172172
var err error
173-
logService, err = logging.NewService(logLevel)
173+
logService, err = logging.NewService(defaultLogLevel, logLevels)
174174
if err != nil {
175175
cliLog.Fatal().Err(err).Msg("Failed to initialize log service")
176176
}

pkg/logging/logger.go

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,9 @@ import (
2929
"sync"
3030
"time"
3131

32-
"github.com/rs/zerolog"
33-
)
32+
"github.com/pkg/errors"
3433

35-
var (
36-
// The defaultLevels list is used during development to increase the
37-
// default level for components that we care a little less about.
38-
defaultLevels = map[string]string{
39-
//"operator": "info",
40-
//"something.status": "info",
41-
}
34+
"github.com/rs/zerolog"
4235
)
4336

4437
// Service exposes the interfaces for a logger service
@@ -70,7 +63,7 @@ func NewRootLogger() zerolog.Logger {
7063
}
7164

7265
// NewService creates a new Service.
73-
func NewService(defaultLevel string) (Service, error) {
66+
func NewService(defaultLevel string, overrides []string) (Service, error) {
7467
l, err := stringToLevel(defaultLevel)
7568
if err != nil {
7669
return nil, maskAny(err)
@@ -81,8 +74,25 @@ func NewService(defaultLevel string) (Service, error) {
8174
defaultLevel: l,
8275
levels: make(map[string]zerolog.Level),
8376
}
84-
for k, v := range defaultLevels {
85-
s.MustSetLevel(k, v)
77+
78+
for _, override := range overrides {
79+
levelParts := strings.Split(override, "=")
80+
switch size := len(levelParts); size {
81+
case 1:
82+
level, err := stringToLevel(levelParts[0])
83+
if err != nil {
84+
return nil, maskAny(err)
85+
}
86+
s.defaultLevel = level
87+
case 2:
88+
level, err := stringToLevel(levelParts[1])
89+
if err != nil {
90+
return nil, maskAny(err)
91+
}
92+
s.levels[levelParts[0]] = level
93+
default:
94+
return nil, errors.Errorf("invalid log definition %s: Length %d is not equal 1 or 2", override, size)
95+
}
8696
}
8797
return s, nil
8898
}

storage.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ func init() {
6464
func cmdStorageProvisionerRun(cmd *cobra.Command, args []string) {
6565
//goflag.CommandLine.Parse([]string{"-logtostderr"})
6666
var err error
67-
logService, err = logging.NewService(logLevel)
67+
logService, err = logging.NewService(defaultLogLevel, logLevels)
6868
if err != nil {
6969
cliLog.Fatal().Err(err).Msg("Failed to initialize log service")
7070
}

0 commit comments

Comments
 (0)