blob: 6f9d4c4c22c5d3487c6ae52f1e861b3346b61358 [file] [log] [blame]
Ganesh Bhure8d0c9942019-05-24 11:42:09 +05301/*
2 * Copyright 2018-present Open Networking Foundation
3
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7
8 * http://www.apache.org/licenses/LICENSE-2.0
9
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package logger
18
19import (
20 lkh "github.com/gfremex/logrus-kafka-hook"
21 log "github.com/sirupsen/logrus"
22 "time"
23)
24
25var (
26 myLogger *log.Entry
27)
28
29func Setup(kafkaBroker string, level string) {
30
31 logger := log.New()
32 //logger.SetReportCaller(true)
33 myLogger = logger.WithField("topics", []string{"kafka-exporter.log"})
34
35 var logLevel log.Level = log.DebugLevel
36 switch level {
37 case "TRACE":
38 logLevel = log.TraceLevel
39 case "INFO":
40 logLevel = log.InfoLevel
41 case "WARN":
42 logLevel = log.WarnLevel
43 case "ERROR":
44 logLevel = log.ErrorLevel
45 default:
46 logLevel = log.DebugLevel
47 }
48 logger.Println("Setting Log Level", logLevel)
49 logger.SetLevel(logLevel)
50
51 if len(kafkaBroker) > 0 {
52 myLogger.Debug("Setting up kafka integration")
53 hook, err := lkh.NewKafkaHook(
54 "kh",
55 []log.Level{log.DebugLevel, log.InfoLevel, log.WarnLevel, log.ErrorLevel},
56 &log.JSONFormatter{
57 TimestampFormat: time.RFC3339Nano,
58 FieldMap: log.FieldMap{
59 log.FieldKeyTime: "@timestamp",
60 log.FieldKeyLevel: "levelname",
61 log.FieldKeyMsg: "message",
62 },
63 },
64 []string{kafkaBroker},
65 )
66
67 if err != nil {
68 myLogger.Error(err)
69 }
70
71 logger.Hooks.Add(hook)
72 myLogger.WithField("kafkaBroker", kafkaBroker).Debug("Logger setup done")
73 }
74}
75
76func GetLogger() *log.Entry {
77 return myLogger
78}
79
80func WithField(key string, value interface{}) *log.Entry {
81 return myLogger.WithField(key, value)
82}
83
84func WithFields(fields log.Fields) *log.Entry {
85 return myLogger.WithFields(fields)
86}
87
88func Panic(msg string, args ...interface{}) {
89 myLogger.Panicf(msg, args...)
90}
91
92func Fatal(msg string, args ...interface{}) {
93 myLogger.Fatalf(msg, args...)
94}
95
96func Error(msg string, args ...interface{}) {
97 myLogger.Errorf(msg, args...)
98}
99
100func Warn(msg string, args ...interface{}) {
101 myLogger.Warnf(msg, args...)
102}
103
104func Info(msg string, args ...interface{}) {
105 myLogger.Infof(msg, args...)
106}
107
108func Debug(msg string, args ...interface{}) {
109 myLogger.Debugf(msg, args...)
110}