diff --git a/posthog/src/main/java/com/posthog/java/DefaultPostHogLogger.java b/posthog/src/main/java/com/posthog/java/DefaultPostHogLogger.java new file mode 100644 index 0000000..9b005b5 --- /dev/null +++ b/posthog/src/main/java/com/posthog/java/DefaultPostHogLogger.java @@ -0,0 +1,37 @@ +package com.posthog.java; + +import java.util.logging.Level; +import java.util.logging.Logger; + +public class DefaultPostHogLogger implements PostHogLogger { + private final Logger logger; + + public DefaultPostHogLogger() { + this.logger = Logger.getLogger(PostHog.class.getName()); + } + + @Override + public void debug(String message) { + logger.fine(message); + } + + @Override + public void info(String message) { + logger.info(message); + } + + @Override + public void warn(String message) { + logger.warning(message); + } + + @Override + public void error(String message) { + logger.severe(message); + } + + @Override + public void error(String message, Throwable throwable) { + logger.log(Level.SEVERE, message, throwable); + } +} diff --git a/posthog/src/main/java/com/posthog/java/HttpSender.java b/posthog/src/main/java/com/posthog/java/HttpSender.java index 9c70222..87728bd 100644 --- a/posthog/src/main/java/com/posthog/java/HttpSender.java +++ b/posthog/src/main/java/com/posthog/java/HttpSender.java @@ -15,12 +15,12 @@ import okhttp3.Response; public class HttpSender implements Sender { - private String apiKey; - private String host; - private OkHttpClient client; - private int maxRetries; - private Duration initialRetryInterval; - private PostHogLogger logger; + private final String apiKey; + private final String host; + private final OkHttpClient client; + private final int maxRetries; + private final Duration initialRetryInterval; + private final PostHogLogger logger; public static class Builder { // required @@ -34,6 +34,7 @@ public static class Builder { // optional private Duration initialRetryInterval = Duration.ofMillis(500); + private PostHogLogger logger = new DefaultPostHogLogger(); public Builder(String apiKey) { this.apiKey = apiKey; @@ -61,9 +62,6 @@ public Builder logger(PostHogLogger logger) { } public HttpSender build() { - if (this.logger == null) { - this.logger = new DefaultPostHogLogger(); - } return new HttpSender(this); } } @@ -181,9 +179,7 @@ public JSONObject post(String route, String distinctId) { response = call.execute(); if (response.isSuccessful()) { - JSONObject responseJSON = new JSONObject(response.body().string()); - - return responseJSON; + return new JSONObject(response.body().string()); } if (response.code() >= 400 && response.code() < 500) { @@ -191,7 +187,7 @@ public JSONObject post(String route, String distinctId) { return null; } } catch (IOException e) { - e.printStackTrace(); + logger.error("Error calling API", e); } finally { if (response != null) { response.close(); diff --git a/posthog/src/main/java/com/posthog/java/PostHog.java b/posthog/src/main/java/com/posthog/java/PostHog.java index 4dd4445..2d91736 100644 --- a/posthog/src/main/java/com/posthog/java/PostHog.java +++ b/posthog/src/main/java/com/posthog/java/PostHog.java @@ -9,10 +9,10 @@ import org.json.JSONObject; public class PostHog { - private QueueManager queueManager; + private final QueueManager queueManager; private Thread queueManagerThread; - private Sender sender; - private PostHogLogger logger; + private final Sender sender; + private final PostHogLogger logger; private static abstract class BuilderBase { protected QueueManager queueManager; diff --git a/posthog/src/main/java/com/posthog/java/PostHogLogger.java b/posthog/src/main/java/com/posthog/java/PostHogLogger.java new file mode 100644 index 0000000..2565f8a --- /dev/null +++ b/posthog/src/main/java/com/posthog/java/PostHogLogger.java @@ -0,0 +1,13 @@ +package com.posthog.java; + +/** + * Allows you to inject a logger to the PostHog library + * We configure the DefaultPostHogLogger if one is not provided + */ +public interface PostHogLogger { + void debug(String message); + void info(String message); + void warn(String message); + void error(String message); + void error(String message, Throwable throwable); +} \ No newline at end of file