diff --git a/src/main/java/org/example/service/ChallengeServiceImpl.java b/src/main/java/org/example/service/ChallengeServiceImpl.java
index 39ea856ce8dcf64e3820525c2df158c9436c49e4..a277185b85753bd49085b2533a5c8205bd3a6d5e 100644
--- a/src/main/java/org/example/service/ChallengeServiceImpl.java
+++ b/src/main/java/org/example/service/ChallengeServiceImpl.java
@@ -1,19 +1,51 @@
 
 package org.example.service;
 
+import javax.annotation.Resource;
 import javax.jws.WebService;
+import javax.xml.ws.EndpointReference;
+import javax.xml.ws.WebServiceContext;
+import javax.xml.ws.handler.MessageContext;
 import javax.jws.WebMethod;
 
+import com.sun.net.httpserver.HttpExchange;
+import com.sun.xml.internal.ws.developer.JAXWSProperties;
 import org.example.model.Challenge;
 import org.example.model.ChallengeDAOImpl;
 import org.example.core.Database;
+import org.example.model.Log;
+import org.w3c.dom.Element;
+import java.security.Principal;
 
 @WebService
 public class ChallengeServiceImpl implements ChallengeService {
+
+    @Resource
+    public WebServiceContext wsContext;
+
     @Override
     @WebMethod
     public Challenge getChallengeById(int id) {
         ChallengeDAOImpl challengeDAO = new ChallengeDAOImpl();
+        log("Get challenge by id");
         return challengeDAO.findById(id);
     }
+
+    public void log(String description) {
+        try {
+            MessageContext msgContext = wsContext.getMessageContext();
+            HttpExchange httpExchange = (HttpExchange) msgContext.get("com.sun.xml.internal.ws.http.exchange");
+            String ip = httpExchange.getRemoteAddress().getAddress().getHostAddress();
+            String endpoint = httpExchange.getRequestURI().toString();
+            System.out.println(ip);
+            System.out.println(endpoint);
+            Log log = new Log();
+            String apiKey = httpExchange.getRequestHeaders().getFirst("X-API-Key");
+            String desc = apiKey + ": " + description;
+           log.InsertLog(desc, ip, endpoint);
+        } catch (Exception e) {
+           System.out.println("Internal Server Error: " + e.getMessage());
+        }
+    }
+
 }
\ No newline at end of file