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 1137b7e5131b0858bb3e7b414ea2ef180730ef4a..00c6305ec6e66f2de35cb35d8abf6c038ad903d3 100644
--- a/handler/generate_keypair.go
+++ b/handler/generate_keypair.go
@@ -26,7 +26,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 9871d437744dcdb831fd8d8fe73fed44488a0859..2122beaa447cb563c32e153b5d56dcb086ea5692 100644
--- a/handler/handler.go
+++ b/handler/handler.go
@@ -20,9 +20,10 @@ package handler
 import (
 	"code.vereign.com/code/viam-apis/errors"
 	"encoding/base64"
-	"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..e02213e772c398407658619db48ed6341244de81 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,14 +28,14 @@ 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")
 	flag.Parse()
 
 	if *configFile == "" && *etcdURL == "" {
-		log.Fatalln("Config file path or etcd URL not specified")
+		log.Fatal("Config file path or etcd URL not specified")
 		return
 	}
 
@@ -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 98ff248188645db07085aefb655760dfb62aaaf6..044a242fcfae533cb3e0158d5368abd834d44663 100644
--- a/server/server.go
+++ b/server/server.go
@@ -22,11 +22,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 552d8459fe39a74aa37877582b1982616d0efa68..315171fc03e98db09823f3784f04d55b83dabd1c 100644
--- a/utils/utils.go
+++ b/utils/utils.go
@@ -23,7 +23,8 @@ import (
 	"crypto/x509"
 	"fmt"
 	"io"
-	"log"
+
+	"code.vereign.com/code/viam-apis/log"
 
 	"encoding/pem"
 	"io/ioutil"