diff --git a/internal/bbsim/api/grpc_api_server.go b/internal/bbsim/api/grpc_api_server.go
index 27b0ce5..63f5f4a 100644
--- a/internal/bbsim/api/grpc_api_server.go
+++ b/internal/bbsim/api/grpc_api_server.go
@@ -20,6 +20,7 @@
 	"context"
 	"github.com/opencord/bbsim/api/bbsim"
 	"github.com/opencord/bbsim/internal/bbsim/devices"
+	bbsimLogger "github.com/opencord/bbsim/internal/bbsim/logger"
 	log "github.com/sirupsen/logrus"
 )
 
@@ -102,3 +103,13 @@
 	}
 	return &onus, nil
 }
+
+func (s BBSimServer) SetLogLevel(ctx context.Context, req *bbsim.LogLevel) (*bbsim.LogLevel, error) {
+
+	bbsimLogger.SetLogLevel(log.StandardLogger(), req.Level, req.Caller)
+
+	return &bbsim.LogLevel{
+		Level:  log.StandardLogger().Level.String(),
+		Caller: log.StandardLogger().ReportCaller,
+	}, nil
+}
diff --git a/internal/bbsim/logger/logger.go b/internal/bbsim/logger/logger.go
new file mode 100644
index 0000000..c6036fc
--- /dev/null
+++ b/internal/bbsim/logger/logger.go
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package logger
+
+import log "github.com/sirupsen/logrus"
+
+func SetLogLevel(logger *log.Logger, level string, caller bool) {
+
+	logger.SetReportCaller(caller)
+
+	switch level {
+	case "trace":
+		logger.SetLevel(log.TraceLevel)
+	case "debug":
+		logger.SetLevel(log.DebugLevel)
+	case "info":
+		logger.SetLevel(log.InfoLevel)
+	case "warn":
+		logger.SetLevel(log.WarnLevel)
+	case "error":
+		logger.SetLevel(log.ErrorLevel)
+	default:
+		logger.SetLevel(log.DebugLevel)
+		logger.WithFields(log.Fields{
+			"level": level,
+		}).Warn("The provided level is unknown. Defaulting to 'debug'")
+	}
+
+}
diff --git a/internal/bbsim/logger/logger_test.go b/internal/bbsim/logger/logger_test.go
new file mode 100644
index 0000000..d692135
--- /dev/null
+++ b/internal/bbsim/logger/logger_test.go
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package logger_test
+
+import (
+	bbsimLogger "github.com/opencord/bbsim/internal/bbsim/logger"
+	"github.com/sirupsen/logrus"
+	"gotest.tools/assert"
+	"testing"
+)
+
+func Test_SetLogLevel(t *testing.T) {
+	log := logrus.New()
+
+	bbsimLogger.SetLogLevel(log, "trace", false)
+	assert.Equal(t, log.Level, logrus.TraceLevel)
+
+	bbsimLogger.SetLogLevel(log, "debug", false)
+	assert.Equal(t, log.Level, logrus.DebugLevel)
+
+	bbsimLogger.SetLogLevel(log, "info", false)
+	assert.Equal(t, log.Level, logrus.InfoLevel)
+
+	bbsimLogger.SetLogLevel(log, "warn", false)
+	assert.Equal(t, log.Level, logrus.WarnLevel)
+
+	bbsimLogger.SetLogLevel(log, "error", false)
+	assert.Equal(t, log.Level, logrus.ErrorLevel)
+
+	bbsimLogger.SetLogLevel(log, "foobar", false)
+	assert.Equal(t, log.Level, logrus.DebugLevel)
+}
+
+func Test_SetLogLevelCaller(t *testing.T) {
+	log := logrus.New()
+
+	bbsimLogger.SetLogLevel(log, "debug", true)
+	assert.Equal(t, log.ReportCaller, true)
+
+	bbsimLogger.SetLogLevel(log, "debug", false)
+	assert.Equal(t, log.ReportCaller, false)
+}
