diff --git a/src/main/java/org/tonality/model/Logging.java b/src/main/java/org/tonality/model/Logging.java
new file mode 100644
index 0000000000000000000000000000000000000000..24836ed60ffa9b9706d7ad1a5ec3dd58fa51eb36
--- /dev/null
+++ b/src/main/java/org/tonality/model/Logging.java
@@ -0,0 +1,28 @@
+package org.tonality.model;
+
+import lombok.Getter;
+import lombok.Setter;
+import org.hibernate.annotations.GenericGenerator;
+
+import javax.persistence.*;
+
+@Getter
+@Setter
+@Entity(name = "logging")
+@Table(name = "logging")
+public class Logging {
+    @Id
+    @GeneratedValue(generator = "increment")
+    @GenericGenerator(name = "increment", strategy = "increment")
+    @Column(name = "log_id", nullable = false)
+    private long logId;
+
+    @Column(name = "endpoint", nullable = false)
+    private String endpoint;
+
+    @Column(name = "ip", nullable = false)
+    private String IP;
+
+    @Column(name = "description", nullable = false)
+    private String description;
+}
diff --git a/src/main/java/org/tonality/repository/Logging.java b/src/main/java/org/tonality/repository/Logging.java
new file mode 100644
index 0000000000000000000000000000000000000000..9dfb054d780e959e0bfd362447445765bb7c479a
--- /dev/null
+++ b/src/main/java/org/tonality/repository/Logging.java
@@ -0,0 +1,37 @@
+package org.tonality.repository;
+
+import java.sql.SQLException;
+
+public class Logging extends BaseRepository<org.tonality.model.Logging> {
+    private static Logging instance = null;
+
+    @Override
+    protected Class<org.tonality.model.Logging> getEntityClass() {
+        return org.tonality.model.Logging.class;
+    }
+
+    public static Logging getInstance() {
+        if (instance == null) {
+            instance = new Logging();
+        }
+
+        return instance;
+    }
+
+    public org.tonality.model.Logging create(String endpoint, String IP, String description) throws SQLException {
+        try {
+            org.tonality.model.Logging log = new org.tonality.model.Logging();
+            log.setEndpoint(endpoint);
+            log.setIP(IP);
+            log.setDescription(description);
+            if (org.tonality.repository.Logging.getInstance().add(log) == null) {
+                throw new Exception("Failed to create log");
+            }
+
+            return log;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+}
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();
diff --git a/src/main/resources/hibernate.cfg.xml b/src/main/resources/hibernate.cfg.xml
index 1af8bee269c849e7002cd39f2ec3e8dd7ef245f9..3d349627681a8137175da376aa6e0954d3b8dbeb 100644
--- a/src/main/resources/hibernate.cfg.xml
+++ b/src/main/resources/hibernate.cfg.xml
@@ -14,5 +14,6 @@
         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
 
         <mapping class="org.tonality.model.Subscription"/>
+        <mapping class="org.tonality.model.Logging"/>
     </session-factory>
 </hibernate-configuration>
\ No newline at end of file