aboutsummaryrefslogtreecommitdiffstats
path: root/certServiceK8sExternalProvider/src/leveledlogger/logger.go
diff options
context:
space:
mode:
Diffstat (limited to 'certServiceK8sExternalProvider/src/leveledlogger/logger.go')
-rw-r--r--certServiceK8sExternalProvider/src/leveledlogger/logger.go138
1 files changed, 138 insertions, 0 deletions
diff --git a/certServiceK8sExternalProvider/src/leveledlogger/logger.go b/certServiceK8sExternalProvider/src/leveledlogger/logger.go
new file mode 100644
index 00000000..ee839cbc
--- /dev/null
+++ b/certServiceK8sExternalProvider/src/leveledlogger/logger.go
@@ -0,0 +1,138 @@
+/*
+ * ============LICENSE_START=======================================================
+ * oom-certservice-k8s-external-provider
+ * ================================================================================
+ * Copyright (C) 2020 Nokia. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package leveledlogger
+
+import (
+ "encoding/json"
+ "fmt"
+ "io/ioutil"
+ "log"
+
+ "github.com/go-logr/logr"
+ "go.uber.org/zap/zapcore"
+ "github.com/go-logr/zapr"
+ "go.uber.org/zap"
+)
+
+const (
+ WARNING = int(zapcore.WarnLevel) * -1
+ INFO = int(zapcore.InfoLevel) * -1
+ DEBUG = int(zapcore.DebugLevel) * -1
+)
+
+type Logger struct {
+ Log logr.Logger
+ ConfigFile string
+}
+
+var configFileName = "default"
+var logLevel = "warn"
+
+func SetConfigFileName(newName string) {
+ configFileName = newName
+}
+
+func SetLogLevel(level string) {
+ logLevel = level
+}
+
+func GetLogger() Logger {
+ var cfg zap.Config
+
+ if err := json.Unmarshal(getConfig(), &cfg); err != nil {
+ panic(err)
+ }
+ logger, err := cfg.Build()
+ if err != nil {
+ panic(err)
+ }
+
+ leveledLogger := Logger{
+ Log: zapr.NewLogger(logger),
+ }
+ return leveledLogger
+}
+
+func GetLoggerWithValues(keysAndValues ...interface{}) Logger {
+ leveledLogger := GetLogger()
+ leveledLogger.Log = leveledLogger.Log.WithValues(keysAndValues...)
+ return leveledLogger
+}
+
+func GetLoggerWithName(name string) Logger {
+ leveledLogger := GetLogger()
+ leveledLogger.Log = leveledLogger.Log.WithName(name)
+ return leveledLogger
+}
+
+func (logger *Logger) Error(err error, message string, keysAndValues ...interface{}) {
+ logger.Log.Error(err, message, keysAndValues...)
+}
+
+func (logger *Logger) Warning(message string, keysAndValues ...interface{}) {
+ logger.log(message, WARNING, keysAndValues...)
+}
+
+func (logger *Logger) Info(message string, keysAndValues ...interface{}) {
+ logger.log(message, INFO, keysAndValues...)
+}
+
+func (logger *Logger) Debug(message string, keysAndValues ...interface{}) {
+ logger.log(message, DEBUG, keysAndValues...)
+}
+
+func (logger *Logger) log(message string, lvl int, keysAndValues ...interface{}) {
+ logger.Log.V(lvl).Info(message, keysAndValues...)
+}
+
+func getDefaultConfig() []byte {
+ return []byte(fmt.Sprintf(`{
+ "level": "%s",
+ "encoding": "console",
+ "outputPaths": ["stdout"],
+ "encoderConfig": {
+ "timeKey": "timeKey",
+ "messageKey": "message",
+ "levelKey": "level",
+ "nameKey": "name",
+ "levelEncoder": "capital",
+ "timeEncoder": "iso8601"
+ }
+ }`, logLevel))
+}
+
+func getConfig() []byte {
+ var config = []byte{}
+ if configFileName == "default" {
+ config = getDefaultConfig()
+ } else {
+ config = readFile(configFileName)
+ }
+ return config
+}
+
+func readFile(filename string) []byte {
+ certRequest, err := ioutil.ReadFile(filename)
+ if err != nil {
+ log.Fatal(err)
+ }
+ return certRequest
+}