diff --git a/Gopkg.toml b/Gopkg.toml
index 90b77e21222338f0025053488999d73e798d7b50..184f54a8246aa0d506484a8152936bae529e8413 100644
--- a/Gopkg.toml
+++ b/Gopkg.toml
@@ -1,5 +1,5 @@
 [[constraint]]
-  branch = "master"
+  branch = "20-zerolog-for-json-logging"
   name = "code.vereign.com/code/viam-apis"
 
 [[override]]
diff --git a/config.yaml.sample b/config.yaml.sample
index f89eed8f9c48a1f22636edc31195bff0aeb8698d..887c3839d1d972a1c667353be3ec23c6936e2d0b 100644
--- a/config.yaml.sample
+++ b/config.yaml.sample
@@ -50,4 +50,6 @@ certificationCaCertFile: caCertificateKey
 #certificationVereignCertFile: vereign_ca.cer
 certificationVereignCertFile: vereignCaCertificateKey
 #certificationVereignKeyFile: vereign_ca.key
-certificationVereignKeyFile: vereignCaPrivateKey
\ No newline at end of file
+certificationVereignKeyFile: vereignCaPrivateKey
+#possible levels: trace, info, debug, warn, error, fatal, panic
+globalLogLevel: debug
\ No newline at end of file
diff --git a/config/configs.go b/config/configs.go
index 5bd3a94a560e4027b32c319a6ee393979303a29c..b7ad2d1b278459df7b572ccaee34a0945c29dbb0 100644
--- a/config/configs.go
+++ b/config/configs.go
@@ -1,16 +1,17 @@
 package config
 
 import (
-	"log"
 	"os"
 	"path/filepath"
 	"strings"
 
+	"code.vereign.com/code/viam-apis/log"
+
 	"code.vereign.com/code/viam-apis/authentication"
 	"github.com/spf13/viper"
-)
 
-import _ "github.com/spf13/viper/remote"
+	_ "github.com/spf13/viper/remote"
+)
 
 var SystemAuth = &authentication.Authentication{
 	Uuid:    "undefined",
@@ -34,6 +35,7 @@ var RestListenAddress string
 var DataStorageUrl string
 var EntitiesManagerUrl string
 var CertDir string
+var GlobalLogLevel string
 
 func SetConfigValues(configFile, etcdURL string) {
 	// Set Default Values For Config Variables
@@ -62,6 +64,7 @@ func SetConfigValues(configFile, etcdURL string) {
 	viper.SetDefault("certificationCaCertFile", "ca.crt")
 	viper.SetDefault("certificationVereignCertFile", "vereign_ca.cer")
 	viper.SetDefault("certificationVereignKeyFile", "vereign_ca.key")
+	viper.SetDefault("globalLogLevel", "info")
 
 	/*
 			// Vault Defaults
@@ -143,6 +146,7 @@ func SetConfigValues(configFile, etcdURL string) {
 	CaCertificatePEM = GetCaCertificatePEM()
 	VereignCaCertificatePEM = GetVereignCaCertificatePEM()
 	VereignCaKeyPEM = GetVereignCaKeyPEM()
+	GlobalLogLevel = viper.GetString("globalLogLevel")
 }
 
 func GetCertificatePEM() []byte {
diff --git a/config/pem_reader.go b/config/pem_reader.go
index c40fae40f065e526dc65ff944ec8ecc9aec089c9..a9aafab9d921b40bdb24a3c4dbc17b2e5e18a173 100644
--- a/config/pem_reader.go
+++ b/config/pem_reader.go
@@ -2,7 +2,8 @@ package config
 
 import (
 	"io/ioutil"
-	"log"
+
+	"code.vereign.com/code/viam-apis/log"
 
 	vc "github.com/hashicorp/vault/api"
 )
diff --git a/handler/generate_keypair.go b/handler/generate_keypair.go
index a787c3dd68898c1b0f9788eb197a0052527129d5..4b04e902cc54a093b27bc08188099c7d00d3301b 100644
--- a/handler/generate_keypair.go
+++ b/handler/generate_keypair.go
@@ -25,7 +25,8 @@ import (
 	"crypto/sha256"
 	"crypto/x509"
 	"encoding/pem"
-	"log"
+
+	"code.vereign.com/code/viam-apis/log"
 
 	keyutils "code.vereign.com/code/key-storage-agent/utils"
 	"code.vereign.com/code/viam-apis/key-storage-agent/api"
diff --git a/handler/handler.go b/handler/handler.go
index 8ca9a05d72229a6ebf7d0b46e96e9ac4f2efa944..909af8c19651f3bd4afd89dfd5c698b070ee8cf0 100644
--- a/handler/handler.go
+++ b/handler/handler.go
@@ -20,9 +20,10 @@ package handler
 import (
 	"encoding/base64"
 	"errors"
-	"log"
 	"strings"
 
+	"code.vereign.com/code/viam-apis/log"
+
 	"code.vereign.com/code/viam-apis/clientutils"
 
 	"code.vereign.com/code/key-storage-agent/config"
diff --git a/main.go b/main.go
index 4b937e1f6de264df8ccf987299d4beeff654063a..06469a2c65c171f3787e733d836acc061b6c8ebd 100644
--- a/main.go
+++ b/main.go
@@ -19,7 +19,8 @@ package main
 
 import (
 	"flag"
-	"log"
+
+	"code.vereign.com/code/viam-apis/log"
 
 	"code.vereign.com/code/key-storage-agent/config"
 	"code.vereign.com/code/key-storage-agent/server"
@@ -27,7 +28,7 @@ import (
 
 // main start a gRPC server and waits for connection
 func main() {
-	log.SetFlags(log.LstdFlags | log.Lshortfile)
+	//log.SetFlags(log.LstdFlags | log.Lshortfile)
 
 	configFile := flag.String("config-file", "", "path to configuration file")
 	etcdURL := flag.String("etcd-url", "", "etcd URL")
@@ -50,6 +51,7 @@ func main() {
 	vereignCaKeyPem := config.VereignCaKeyPEM
 
 	maxMessageSize := config.MaxMessageSize
+	log.SetConfiguration(config.GlobalLogLevel)
 
 	// fire the gRPC server in a goroutine
 	go func() {
diff --git a/server/server.go b/server/server.go
index 8c00656f1d30efb20c0b78c099531acc1a3b70ef..c605b2e6aede3bcae728d35c8d0e0b3655d6d247 100644
--- a/server/server.go
+++ b/server/server.go
@@ -21,11 +21,12 @@ import (
 	"crypto/tls"
 	"crypto/x509"
 	"fmt"
-	"log"
 	"net"
 	"net/http"
 	"strings"
 
+	"code.vereign.com/code/viam-apis/log"
+
 	"code.vereign.com/code/key-storage-agent/config"
 	"code.vereign.com/code/key-storage-agent/handler"
 	"code.vereign.com/code/key-storage-agent/session"
diff --git a/session/session.go b/session/session.go
index 326243f9350e95a6c295d5ad4aa775363b17aee3..8d7f9f3c048234cdd82940be7736c98879d719fd 100644
--- a/session/session.go
+++ b/session/session.go
@@ -18,8 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
 package session
 
 import (
-	"log"
 	client "code.vereign.com/code/viam-apis/data-storage-agent/client"
+	"code.vereign.com/code/viam-apis/log"
 )
 
 func CheckSession(uuid string, session string, sessionClient *client.DataStorageClientImpl) bool {
diff --git a/utils/utils.go b/utils/utils.go
index a8158a3d5c73485866e9601c9a20c96646262425..37eb6f4cd4908866827504c0fd5fa269643ba596 100644
--- a/utils/utils.go
+++ b/utils/utils.go
@@ -23,7 +23,8 @@ import (
 	"errors"
 	"fmt"
 	"io"
-	"log"
+
+	"code.vereign.com/code/viam-apis/log"
 
 	"encoding/pem"
 	"io/ioutil"
@@ -145,15 +146,15 @@ func GetKey(client *client.DataStorageClientImpl, uuid string, keyType api.KeyTy
 	}
 
 	/*
-	if errorsString != "" {
-		statusList = utils.AddStatus(statusList, "400", api.StatusType_ERROR, errorsString)
-		return nil, statusList
-	}
+		if errorsString != "" {
+			statusList = utils.AddStatus(statusList, "400", api.StatusType_ERROR, errorsString)
+			return nil, statusList
+		}
 
-	if !hasData {
-		statusList = utils.AddStatus(statusList, "400", api.StatusType_ERROR, errorsString)
-		return nil, statusList
-	}
+		if !hasData {
+			statusList = utils.AddStatus(statusList, "400", api.StatusType_ERROR, errorsString)
+			return nil, statusList
+		}
 	*/
 
 	return key, nil