blob: cb7229fbf837da6a2330f93e5fe41715bda1cee7 [file] [log] [blame]
Matteo Scandolo88e91892018-11-06 16:29:19 -08001/*
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 (
Matteo Scandolo88e91892018-11-06 16:29:19 -080020 lkh "github.com/gfremex/logrus-kafka-hook"
21 log "github.com/sirupsen/logrus"
Zack Williamsba10d092018-11-26 12:00:32 -070022 "time"
Matteo Scandolo88e91892018-11-06 16:29:19 -080023)
24
25var (
26 myLogger *log.Entry
27)
28
Zdravko Bozakov7401ff22019-05-28 22:45:12 +020029// Setup logger
Matteo Scandolo88e91892018-11-06 16:29:19 -080030func Setup(kafkaBroker string, level string) {
31
32 logger := log.New()
Shad Ansarief436272018-11-14 15:58:20 -080033 //logger.SetReportCaller(true)
Matteo Scandolo88e91892018-11-06 16:29:19 -080034 myLogger = logger.WithField("topics", []string{"bbsim.log"})
35
Zdravko Bozakov7401ff22019-05-28 22:45:12 +020036 var logLevel = log.DebugLevel
Mahir Gunyel09183342019-01-29 14:26:50 -080037 switch level{
38 case "TRACE":
39 logLevel = log.TraceLevel
40 case "INFO":
41 logLevel = log.InfoLevel
42 case "WARN":
43 logLevel = log.WarnLevel
44 case "ERROR":
45 logLevel = log.ErrorLevel
46 default:
47 logLevel = log.DebugLevel
Matteo Scandolo88e91892018-11-06 16:29:19 -080048 }
Mahir Gunyel09183342019-01-29 14:26:50 -080049 logger.Println("Setting Log Level ", logLevel)
50 logger.SetLevel(logLevel)
Matteo Scandolo88e91892018-11-06 16:29:19 -080051
52 if len(kafkaBroker) > 0 {
53 myLogger.Debug("Setting up kafka integration")
54 hook, err := lkh.NewKafkaHook(
55 "kh",
56 []log.Level{log.DebugLevel, log.InfoLevel, log.WarnLevel, log.ErrorLevel},
57 &log.JSONFormatter{
Zack Williamsba10d092018-11-26 12:00:32 -070058 TimestampFormat: time.RFC3339Nano,
Matteo Scandolo88e91892018-11-06 16:29:19 -080059 FieldMap: log.FieldMap{
60 log.FieldKeyTime: "@timestamp",
Zack Williamscedaf6f2018-11-25 21:56:31 -070061 log.FieldKeyLevel: "levelname",
Matteo Scandolo88e91892018-11-06 16:29:19 -080062 log.FieldKeyMsg: "message",
63 },
64 },
65 []string{kafkaBroker},
66 )
67
68 if err != nil {
69 myLogger.Error(err)
70 }
71
72 logger.Hooks.Add(hook)
73
74 }
75
76 myLogger.WithField("kafkaBroker", kafkaBroker).Debug("Logger setup done")
77}
78
Zdravko Bozakov7401ff22019-05-28 22:45:12 +020079// GetLogger return logger instance
Matteo Scandolo2aca22c2018-11-08 14:12:07 -080080func GetLogger() *log.Entry {
81 return myLogger
82}
83
Zdravko Bozakov7401ff22019-05-28 22:45:12 +020084// WithField logs message with specified field
Matteo Scandolo88e91892018-11-06 16:29:19 -080085func WithField(key string, value interface{}) *log.Entry {
86 return myLogger.WithField(key, value)
87}
88
Zdravko Bozakov7401ff22019-05-28 22:45:12 +020089// WithFields logs message with multiple fields
Matteo Scandolo88e91892018-11-06 16:29:19 -080090func WithFields(fields log.Fields) *log.Entry {
91 return myLogger.WithFields(fields)
92}
93
Zdravko Bozakov7401ff22019-05-28 22:45:12 +020094// Panic logs with log level panic
Matteo Scandolo2aca22c2018-11-08 14:12:07 -080095func Panic(msg string, args ...interface{}) {
Matteo Scandolo2a659142018-11-15 11:23:45 -080096 myLogger.Panicf(msg, args...)
Matteo Scandolo88e91892018-11-06 16:29:19 -080097}
98
Zdravko Bozakov7401ff22019-05-28 22:45:12 +020099// Fatal logs woth loge level fatal
Matteo Scandolo2aca22c2018-11-08 14:12:07 -0800100func Fatal(msg string, args ...interface{}) {
Matteo Scandolo2a659142018-11-15 11:23:45 -0800101 myLogger.Fatalf(msg, args...)
Matteo Scandolo88e91892018-11-06 16:29:19 -0800102}
103
Zdravko Bozakov7401ff22019-05-28 22:45:12 +0200104// Error logs with log level error
Matteo Scandolo2aca22c2018-11-08 14:12:07 -0800105func Error(msg string, args ...interface{}) {
Matteo Scandolo2a659142018-11-15 11:23:45 -0800106 myLogger.Errorf(msg, args...)
Matteo Scandolo88e91892018-11-06 16:29:19 -0800107}
108
Zdravko Bozakov7401ff22019-05-28 22:45:12 +0200109// Warn logs with log level warn
Matteo Scandolo2aca22c2018-11-08 14:12:07 -0800110func Warn(msg string, args ...interface{}) {
Matteo Scandolo2a659142018-11-15 11:23:45 -0800111 myLogger.Warnf(msg, args...)
Matteo Scandolo88e91892018-11-06 16:29:19 -0800112}
113
Zdravko Bozakov7401ff22019-05-28 22:45:12 +0200114// Info logs with log level info
Matteo Scandolo2aca22c2018-11-08 14:12:07 -0800115func Info(msg string, args ...interface{}) {
Matteo Scandolo2a659142018-11-15 11:23:45 -0800116 myLogger.Infof(msg, args...)
Matteo Scandolo88e91892018-11-06 16:29:19 -0800117}
118
Zdravko Bozakov7401ff22019-05-28 22:45:12 +0200119// Debug logs with log level debug
Matteo Scandolo2aca22c2018-11-08 14:12:07 -0800120func Debug(msg string, args ...interface{}) {
Matteo Scandolo2a659142018-11-15 11:23:45 -0800121 myLogger.Debugf(msg, args...)
Matteo Scandolo88e91892018-11-06 16:29:19 -0800122}