[VOL-2471] Update library to use package logger
This commit consists of the following:
1) Add a GetLogLevel() API to make it easier to use specific
logger. There is also the V() API that kind of do something
similar.
2) Add a common.go file to some heavily used packages in order
to dynamically set their log level and also to a set a specific
logger per package.
3) Use a per package logger for some of the heavily used packages
for improved performance.
Change-Id: If22a2c82d87d808f305677a2e793f8064f33291e
diff --git a/pkg/mocks/common.go b/pkg/mocks/common.go
index c20dab1..d6d4062 100644
--- a/pkg/mocks/common.go
+++ b/pkg/mocks/common.go
@@ -20,14 +20,15 @@
)
const (
- logLevel = log.FatalLevel
+ logLevel = log.ErrorLevel
)
-// Unit test initialization. This init() function handles all unit tests in
-// the current directory.
+var logger log.Logger
+
func init() {
// Setup this package so that it's log level can be modified at run time
- _, err := log.AddPackage(log.JSON, logLevel, log.Fields{"pkg": "mocks"})
+ var err error
+ logger, err = log.AddPackage(log.JSON, logLevel, log.Fields{"pkg": "mocks"})
if err != nil {
panic(err)
}
diff --git a/pkg/mocks/etcd_server.go b/pkg/mocks/etcd_server.go
index 3246ca0..487b991 100644
--- a/pkg/mocks/etcd_server.go
+++ b/pkg/mocks/etcd_server.go
@@ -18,7 +18,6 @@
import (
"fmt"
"go.etcd.io/etcd/embed"
- "log"
"net/url"
"os"
"time"
@@ -58,19 +57,19 @@
cfg.Dir = localPersistentStorageDir
cfg.Logger = "zap"
if !islogLevelValid(logLevel) {
- log.Fatalf("Invalid log level -%s", logLevel)
+ logger.Fatalf("Invalid log level -%s", logLevel)
}
cfg.LogLevel = logLevel
acurl, err := url.Parse(fmt.Sprintf("http://localhost:%d", clientPort))
if err != nil {
- log.Fatalf("Invalid client port -%d", clientPort)
+ logger.Fatalf("Invalid client port -%d", clientPort)
}
cfg.ACUrls = []url.URL{*acurl}
cfg.LCUrls = []url.URL{*acurl}
apurl, err := url.Parse(fmt.Sprintf("http://localhost:%d", peerPort))
if err != nil {
- log.Fatalf("Invalid peer port -%d", peerPort)
+ logger.Fatalf("Invalid peer port -%d", peerPort)
}
cfg.LPUrls = []url.URL{*apurl}
cfg.APUrls = []url.URL{*apurl}
@@ -100,23 +99,23 @@
// Remove the local directory as
// a safeguard for the case where a prior test failed
if err := os.RemoveAll(cfg.Dir); err != nil {
- log.Fatalf("Failure removing local directory %s", cfg.Dir)
+ logger.Fatalf("Failure removing local directory %s", cfg.Dir)
}
e, err := embed.StartEtcd(cfg)
if err != nil {
- log.Fatal(err)
+ logger.Fatal(err)
}
select {
case <-e.Server.ReadyNotify():
- log.Printf("Embedded Etcd server is ready!")
+ logger.Debug("Embedded Etcd server is ready!")
case <-time.After(serverStartUpTimeout):
e.Server.HardStop() // trigger a shutdown
e.Close()
- log.Fatal("Embedded Etcd server took too long to start!")
+ logger.Fatal("Embedded Etcd server took too long to start!")
case err := <-e.Err():
e.Server.HardStop() // trigger a shutdown
e.Close()
- log.Fatalf("Embedded Etcd server errored out - %s", err)
+ logger.Fatalf("Embedded Etcd server errored out - %s", err)
}
return &EtcdServer{server: e}
}
@@ -128,7 +127,7 @@
es.server.Server.HardStop()
es.server.Close()
if err := os.RemoveAll(storage); err != nil {
- log.Fatalf("Failure removing local directory %s", es.server.Config().Dir)
+ logger.Fatalf("Failure removing local directory %s", es.server.Config().Dir)
}
}
}
diff --git a/pkg/mocks/etcd_server_test.go b/pkg/mocks/etcd_server_test.go
index 0463daa..90a3654 100644
--- a/pkg/mocks/etcd_server_test.go
+++ b/pkg/mocks/etcd_server_test.go
@@ -21,7 +21,6 @@
"github.com/opencord/voltha-lib-go/v2/pkg/db/kvstore"
"github.com/phayes/freeport"
"github.com/stretchr/testify/assert"
- "log"
"os"
"testing"
)
@@ -32,21 +31,21 @@
func setup() {
clientPort, err := freeport.GetFreePort()
if err != nil {
- log.Fatal(err)
+ logger.Fatal(err)
}
peerPort, err := freeport.GetFreePort()
if err != nil {
- log.Fatal(err)
+ logger.Fatal(err)
}
etcdServer = StartEtcdServer(MKConfig("voltha.mock.test", clientPort, peerPort, "voltha.lib.mocks.etcd", "error"))
if etcdServer == nil {
- log.Fatal("Embedded server failed to start")
+ logger.Fatal("Embedded server failed to start")
}
clientAddr := fmt.Sprintf("localhost:%d", clientPort)
client, err = kvstore.NewEtcdClient(clientAddr, 10)
if err != nil || client == nil {
etcdServer.Stop()
- log.Fatal("Failed to create an Etcd client")
+ logger.Fatal("Failed to create an Etcd client")
}
}
diff --git a/pkg/mocks/kafka_client.go b/pkg/mocks/kafka_client.go
index 87dd9e8..381c093 100644
--- a/pkg/mocks/kafka_client.go
+++ b/pkg/mocks/kafka_client.go
@@ -38,7 +38,7 @@
}
func (kc *KafkaClient) Start() error {
- log.Debug("kafka-client-started")
+ logger.Debug("kafka-client-started")
return nil
}
@@ -51,11 +51,11 @@
}
delete(kc.topicsChannelMap, topic)
}
- log.Debug("kafka-client-stopped")
+ logger.Debug("kafka-client-stopped")
}
func (kc *KafkaClient) CreateTopic(topic *kafka.Topic, numPartition int, repFactor int) error {
- log.Debugw("CreatingTopic", log.Fields{"topic": topic.Name, "numPartition": numPartition, "replicationFactor": repFactor})
+ logger.Debugw("CreatingTopic", log.Fields{"topic": topic.Name, "numPartition": numPartition, "replicationFactor": repFactor})
kc.lock.Lock()
defer kc.lock.Unlock()
if _, ok := kc.topicsChannelMap[topic.Name]; ok {
@@ -67,7 +67,7 @@
}
func (kc *KafkaClient) DeleteTopic(topic *kafka.Topic) error {
- log.Debugw("DeleteTopic", log.Fields{"topic": topic.Name})
+ logger.Debugw("DeleteTopic", log.Fields{"topic": topic.Name})
kc.lock.Lock()
defer kc.lock.Unlock()
delete(kc.topicsChannelMap, topic.Name)
@@ -75,7 +75,7 @@
}
func (kc *KafkaClient) Subscribe(topic *kafka.Topic, kvArgs ...*kafka.KVArg) (<-chan *ic.InterContainerMessage, error) {
- log.Debugw("Subscribe", log.Fields{"topic": topic.Name, "args": kvArgs})
+ logger.Debugw("Subscribe", log.Fields{"topic": topic.Name, "args": kvArgs})
kc.lock.Lock()
defer kc.lock.Unlock()
ch := make(chan *ic.InterContainerMessage)
@@ -89,7 +89,7 @@
}
func (kc *KafkaClient) UnSubscribe(topic *kafka.Topic, ch <-chan *ic.InterContainerMessage) error {
- log.Debugw("UnSubscribe", log.Fields{"topic": topic.Name})
+ logger.Debugw("UnSubscribe", log.Fields{"topic": topic.Name})
kc.lock.Lock()
defer kc.lock.Unlock()
if chnls, ok := kc.topicsChannelMap[topic.Name]; ok {
@@ -118,7 +118,7 @@
kc.lock.RLock()
defer kc.lock.RUnlock()
for _, ch := range kc.topicsChannelMap[topic.Name] {
- log.Debugw("Publishing", log.Fields{"fromTopic": req.Header.FromTopic, "toTopic": topic.Name, "id": req.Header.Id})
+ logger.Debugw("Publishing", log.Fields{"fromTopic": req.Header.FromTopic, "toTopic": topic.Name, "id": req.Header.Id})
ch <- req
}
return nil