diff --git a/src/main/java/org/tonality/service/BaseWebService.java b/src/main/java/org/tonality/service/BaseWebService.java
index 0ac46692eb86a94fc352c78a56db906a3acecf08..b5ceb7be66bb6087c6117de131653564821ba2fc 100644
--- a/src/main/java/org/tonality/service/BaseWebService.java
+++ b/src/main/java/org/tonality/service/BaseWebService.java
@@ -6,6 +6,7 @@ import javax.xml.ws.handler.soap.SOAPMessageContext;
 
 import com.sun.net.httpserver.HttpExchange;
 import com.sun.net.httpserver.HttpExchange;
+import org.tonality.repository.Logging;
 
 // https://stackoverflow.com/questions/12727989/jax-ws-getting-client-ip/13693024#13693024
 public abstract class BaseWebService {
@@ -30,10 +31,27 @@ public abstract class BaseWebService {
         return getClientApiKey() != null && getClientApiKey().equals(System.getenv("API_KEY"));
     }
 
-    protected void logRequest() throws Exception {
+    protected void logRequest(String endpoint, String description) throws Exception {
         if (!isRequestValid()) throw new Exception("Invalid request");
         // TODO : implement logging to database
-        System.out.println("Client IP: " + getClientIp());
-        System.out.println("Client API Key: " + getClientApiKey());
+
+        try {
+            String clientIp = getClientIp();
+            String clientApiKey = getClientApiKey();
+
+            org.tonality.model.Logging log = org.tonality.repository.Logging.getInstance().create(endpoint, clientIp, description);
+
+            if (log != null) {
+                System.out.println("Request logged successfully:");
+                System.out.println("Client IP: " + clientIp);
+                System.out.println("Client API Key: " + clientApiKey);
+            } else {
+                throw new Exception("Failed to log request");
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new Exception("Failed to log request");
+        }
     }
 }
diff --git a/src/main/java/org/tonality/service/Subscription.java b/src/main/java/org/tonality/service/Subscription.java
index 7102fe3944a96391761cc62382df5fbf8abb7021..28728bf7c85967d5e33e75a691f3ad1340650049 100644
--- a/src/main/java/org/tonality/service/Subscription.java
+++ b/src/main/java/org/tonality/service/Subscription.java
@@ -12,7 +12,8 @@ public class Subscription extends BaseWebService implements ISubscription {
     @Override
     public org.tonality.model.Subscription createSubscription(long userId, String username, long premiumAlbumId, String albumName, String artist) {
         try {
-            logRequest();
+            String description = "User ID: " + userId +  ", Username: " + username + ", Premium Album ID: " + + premiumAlbumId + ", Album Name" + albumName + ", Artist: " + artist;
+            logRequest("subscription", description);
             return org.tonality.repository.Subscription.getInstance().createSubscription(userId, username, premiumAlbumId, albumName, artist);
         } catch (Exception e) {
             e.printStackTrace();
@@ -23,7 +24,8 @@ public class Subscription extends BaseWebService implements ISubscription {
     @Override
     public org.tonality.model.Subscription updateSubscription(long userId, long premiumAlbumId, SubscriptionStatus status) {
         try {
-            logRequest();
+            String description = "User ID: " + userId +   ", Premium Album ID: " + + premiumAlbumId + ", Subscription Status: " + status;
+            logRequest("subscription", description);
             return org.tonality.repository.Subscription.getInstance().updateSubscription(userId, premiumAlbumId, status);
         } catch (Exception e) {
             e.printStackTrace();
@@ -34,7 +36,8 @@ public class Subscription extends BaseWebService implements ISubscription {
     @Override
     public org.tonality.model.Subscription getSubscription(long userId, long premiumAlbumId) {
         try {
-            logRequest();
+            String description = "User ID: " + userId +   ", Premium Album ID: " + + premiumAlbumId;
+            logRequest("subscription", description);
             SubscriptionMiddleware subscriptionMiddleware = new SubscriptionMiddleware();
             return subscriptionMiddleware.execute(org.tonality.repository.Subscription.getInstance().getById(new SubscriptionId(userId, premiumAlbumId)));
         } catch (Exception e) {
@@ -46,7 +49,8 @@ public class Subscription extends BaseWebService implements ISubscription {
     @Override
     public List<org.tonality.model.Subscription> searchSubscription(SubscriptionStatus status, String searchInput, String orderBy, int page, int size) {
         try {
-            logRequest();
+            String description = "Subscription Status: " + status +   ", Search Input: " + searchInput + ", Order By: " + orderBy + ", Page: " + page + ", Size: " + size;
+            logRequest("subscription", description);
             SubscriptionMiddleware subscriptionMiddleware = new SubscriptionMiddleware();
             return subscriptionMiddleware.execute(org.tonality.repository.Subscription.getInstance().searchSubscriptions(status, searchInput, orderBy, page, size));
         } catch (Exception e) {
@@ -58,7 +62,8 @@ public class Subscription extends BaseWebService implements ISubscription {
     @Override
     public List<org.tonality.model.Subscription> getSubscriptionsByStatus(SubscriptionStatus status, String orderBy, int page, int size) {
         try {
-            logRequest();
+            String description = "Subscription Status: " + status +  ", Order By: " + orderBy + ", Page: " + page + ", Size: " + size;
+            logRequest("subscription", description);
             SubscriptionMiddleware subscriptionMiddleware = new SubscriptionMiddleware();
             return subscriptionMiddleware.execute(org.tonality.repository.Subscription.getInstance().getSubscriptionByStatus(status, orderBy, page, size));
         } catch (Exception e) {
@@ -70,7 +75,8 @@ public class Subscription extends BaseWebService implements ISubscription {
     @Override
     public List<org.tonality.model.Subscription> getSubscriptionsByUserId(long userId, int page, int size) {
         try {
-            logRequest();
+            String description = "User ID: " + userId + ", Page: " + page + ", Size: " + size;
+            logRequest("subscription", description);
             SubscriptionMiddleware subscriptionMiddleware = new SubscriptionMiddleware();
             return subscriptionMiddleware.execute(org.tonality.repository.Subscription.getInstance().getSubscriptionsByUserId(userId, page, size));
         } catch (Exception e) {
@@ -82,7 +88,8 @@ public class Subscription extends BaseWebService implements ISubscription {
     @Override
     public boolean deleteSubscription(long userId, long premiumAlbumId) {
         try {
-            logRequest();
+            String description = "User ID: " + userId + ", Premium Album ID: " + premiumAlbumId;
+            logRequest("subscription", description);
             if (!org.tonality.repository.Subscription.getInstance().deleteById(new org.tonality.model.SubscriptionId(userId, premiumAlbumId))) {
                 throw new Exception("Failed to delete subscription");
             }
@@ -96,7 +103,8 @@ public class Subscription extends BaseWebService implements ISubscription {
     @Override
     public boolean deleteSubscriptionsByUserId(long userId) {
         try {
-            logRequest();
+            String description = "User ID: " + userId;
+            logRequest("subscription", description);
             return org.tonality.repository.Subscription.getInstance().deleteSubscriptionsByUserId(userId);
         } catch (Exception e) {
             e.printStackTrace();
@@ -107,7 +115,8 @@ public class Subscription extends BaseWebService implements ISubscription {
     @Override
     public boolean deleteSubscriptionsByAlbumId(long premiumAlbumId) {
         try {
-            logRequest();
+            String description = "Premium Album ID: " + premiumAlbumId;
+            logRequest("subscription", description);
             return org.tonality.repository.Subscription.getInstance().deleteSubscriptionsByAlbumId(premiumAlbumId);
         } catch (Exception e) {
             e.printStackTrace();