diff --git a/user_channel/channel_mgmt.cpp b/user_channel/channel_mgmt.cpp
index 8594d65..d4757df 100644
--- a/user_channel/channel_mgmt.cpp
+++ b/user_channel/channel_mgmt.cpp
@@ -150,7 +150,8 @@
 {
     if (!isValidChannel(chNum))
     {
-        lg2::error("Invalid channel number: {CHANNEL_ID}", "CHANNEL_ID", chNum);
+        lg2::error("Get channel name - Invalid channel number: {CHANNEL_ID}",
+                   "CHANNEL_ID", chNum);
         throw std::invalid_argument("Invalid channel number");
     }
 
@@ -377,11 +378,6 @@
         return false;
     }
 
-    if (channelData[chNum].isChValid == false)
-    {
-        lg2::debug("Channel is not valid");
-    }
-
     return channelData[chNum].isChValid;
 }
 
@@ -431,7 +427,8 @@
 {
     if (!isValidChannel(chNum))
     {
-        lg2::debug("Invalid channel");
+        lg2::debug("Get channel info - Invalid channel: {CHANNEL}", "CHANNEL",
+                   chNum);
         return ccInvalidFieldRequest;
     }
 
@@ -446,7 +443,8 @@
 {
     if (!isValidChannel(chNum))
     {
-        lg2::debug("Invalid channel");
+        lg2::debug("Get channel access data - Invalid channel: {CHANNEL}",
+                   "CHANNEL", chNum);
         return ccInvalidFieldRequest;
     }
 
@@ -475,7 +473,8 @@
 {
     if (!isValidChannel(chNum))
     {
-        lg2::debug("Invalid channel");
+        lg2::debug("Set channel info - Invalid channel: {CHANNEL}", "CHANNEL",
+                   chNum);
         return ccInvalidFieldRequest;
     }
 
@@ -545,7 +544,9 @@
 {
     if (!isValidChannel(chNum))
     {
-        lg2::debug("Invalid channel");
+        lg2::debug(
+            "Get channel access persist data - Invalid channel: {CHANNEL}",
+            "CHANNEL", chNum);
         return ccInvalidFieldRequest;
     }
 
@@ -574,7 +575,9 @@
 {
     if (!isValidChannel(chNum))
     {
-        lg2::debug("Invalid channel");
+        lg2::debug(
+            "Set channel access persist data - Invalid channel: {CHANNEL}",
+            "CHANNEL", chNum);
         return ccInvalidFieldRequest;
     }
 
@@ -665,7 +668,9 @@
 {
     if (!isValidChannel(chNum))
     {
-        lg2::debug("Invalid channel");
+        lg2::debug(
+            "Get channel auth type supported - Invalid channel: {CHANNEL}",
+            "CHANNEL", chNum);
         return ccInvalidFieldRequest;
     }
 
@@ -678,7 +683,8 @@
 {
     if (!isValidChannel(chNum))
     {
-        lg2::debug("Invalid channel");
+        lg2::debug("Get channel enabled auth type - Invalid channel: {CHANNEL}",
+                   "CHANNEL", chNum);
         return ccInvalidFieldRequest;
     }
 
diff --git a/user_channel/cipher_mgmt.cpp b/user_channel/cipher_mgmt.cpp
index c954f65..c0c0ae1 100644
--- a/user_channel/cipher_mgmt.cpp
+++ b/user_channel/cipher_mgmt.cpp
@@ -178,7 +178,9 @@
 {
     if (!isValidChannel(chNum))
     {
-        lg2::error("Invalid channel number: {CHANNEL}", "CHANNEL", chNum);
+        lg2::error(
+            "Get CS Privilege levels - Invalid channel number: {CHANNEL}",
+            "CHANNEL", chNum);
         return ccInvalidFieldRequest;
     }
 
@@ -194,7 +196,9 @@
 {
     if (!isValidChannel(chNum))
     {
-        lg2::error("Invalid channel number: {CHANNEL}", "CHANNEL", chNum);
+        lg2::error(
+            "Set CS Privilege levels - Invalid channel number: {CHANNEL}",
+            "CHANNEL", chNum);
         return ccInvalidFieldRequest;
     }
 
diff --git a/user_channel/user_layer.cpp b/user_channel/user_layer.cpp
index 5a2e7e0..ee147d8 100644
--- a/user_channel/user_layer.cpp
+++ b/user_channel/user_layer.cpp
@@ -143,6 +143,8 @@
 {
     if (!UserAccess::isValidChannel(chNum))
     {
+        lg2::error("Get Privilege access - Invalid channel number: {CHANNEL}",
+                   "CHANNEL", chNum);
         return ccInvalidFieldRequest;
     }
     if (!UserAccess::isValidUserId(userId))
@@ -186,6 +188,9 @@
 {
     if (!UserAccess::isValidChannel(chNum))
     {
+        lg2::error(
+            "Set user payload access - Invalid channel number: {CHANNEL}",
+            "CHANNEL", chNum);
         return ccInvalidFieldRequest;
     }
     if (!UserAccess::isValidUserId(userId))
@@ -202,6 +207,9 @@
 {
     if (!UserAccess::isValidChannel(chNum))
     {
+        lg2::error(
+            "Get user payload access - Invalid channel number: {CHANNEL}",
+            "CHANNEL", chNum);
         return ccInvalidFieldRequest;
     }
     if (!UserAccess::isValidUserId(userId))
diff --git a/user_channel/user_mgmt.cpp b/user_channel/user_mgmt.cpp
index 29262cb..8c5a1bf 100644
--- a/user_channel/user_mgmt.cpp
+++ b/user_channel/user_mgmt.cpp
@@ -789,6 +789,9 @@
 
     if (!isValidChannel(chNum))
     {
+        lg2::debug(
+            "Set user payload access - Invalid channel request: {CHANNEL}",
+            "CHANNEL", chNum);
         return ccInvalidFieldRequest;
     }
     if (!isValidUserId(userId))
@@ -839,6 +842,9 @@
 {
     if (!isValidChannel(chNum))
     {
+        lg2::debug(
+            "Set user privilege access - Invalid channel request: {CHANNEL}",
+            "CHANNEL", chNum);
         return ccInvalidFieldRequest;
     }
     if (!isValidUserId(userId))
diff --git a/user_channel/usercommands.cpp b/user_channel/usercommands.cpp
index 3e1b3ca..520501d 100644
--- a/user_channel/usercommands.cpp
+++ b/user_channel/usercommands.cpp
@@ -69,7 +69,8 @@
         convertCurrentChannelNum(static_cast<uint8_t>(channel), ctx->channel);
     if (!isValidChannel(chNum))
     {
-        lg2::debug("Set user access - Invalid channel request");
+        lg2::debug("Set user access - Invalid channel request: {CHANNEL}",
+                   "CHANNEL", chNum);
         return ipmi::response(invalidChannel);
     }
     if (getChannelSessionSupport(chNum) == EChannelSessSupported::none)
