Skip to content

Commit 8ad2be9

Browse files
committed
add debug feature, log listener
This allows app developers to get all log entries so they can send them to their backend for later review.
1 parent 8a3e2c2 commit 8ad2be9

File tree

4 files changed

+54
-0
lines changed

4 files changed

+54
-0
lines changed

Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/application/MainApplication.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
import com.onesignal.OSNotification;
99
import com.onesignal.OSInAppMessageLifecycleHandler;
1010
import com.onesignal.OneSignal;
11+
import com.onesignal.debug.OneSignalLogEvent;
12+
import com.onesignal.debug.OneSignalLogListener;
1113
import com.onesignal.sdktest.R;
1214
import com.onesignal.sdktest.constant.Tag;
1315
import com.onesignal.sdktest.constant.Text;
@@ -74,4 +76,19 @@ public void onDidDismissInAppMessage(OSInAppMessage message) {
7476
Log.d(Tag.DEBUG, Text.ONESIGNAL_SDK_INIT);
7577
}
7678

79+
private void setupLogListener() {
80+
OneSignalLogListener logListener = new OneSignalLogListener() {
81+
@Override
82+
public void onLogEvent(OneSignalLogEvent event) {
83+
// App developer can send these logs to their backend, the
84+
// println code here is just to show it works.
85+
System.out.println(event.getEntry());
86+
}
87+
};
88+
89+
OneSignal.addLogListener(logListener);
90+
// Remove can be called if you need to stop collecting logs.
91+
// OneSignal.removeLogListener(logListener);
92+
}
93+
7794
}

OneSignalSDK/onesignal/src/main/java/com/onesignal/OneSignal.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@
4545
import androidx.annotation.WorkerThread;
4646
import androidx.core.app.NotificationCompat;
4747

48+
import com.onesignal.debug.OneSignalLogEvent;
49+
import com.onesignal.debug.OneSignalLogListener;
4850
import com.onesignal.influence.data.OSTrackerFactory;
4951
import com.onesignal.influence.domain.OSInfluence;
5052
import com.onesignal.language.LanguageContext;
@@ -1332,6 +1334,28 @@ public void run() {
13321334
Log.e(TAG, "Error showing logging message.", t);
13331335
}
13341336
}
1337+
1338+
callLogListeners(level, message, throwable);
1339+
}
1340+
1341+
private static void callLogListeners(@NonNull final LOG_LEVEL level, @NonNull String message, @Nullable Throwable throwable) {
1342+
String logEntry = message;
1343+
if (throwable != null) {
1344+
logEntry += "\n" + Log.getStackTraceString(throwable);
1345+
}
1346+
for (OneSignalLogListener listener : logListeners) {
1347+
listener.onLogEvent(new OneSignalLogEvent(level, logEntry));
1348+
}
1349+
}
1350+
1351+
private static final List<OneSignalLogListener> logListeners = new ArrayList<>();
1352+
1353+
public static void addLogListener(@NonNull OneSignalLogListener listener) {
1354+
logListeners.add(listener);
1355+
}
1356+
1357+
public static void removeLogListener(@NonNull OneSignalLogListener listener) {
1358+
logListeners.remove(listener);
13351359
}
13361360

13371361
static void logHttpError(String errorString, int statusCode, Throwable throwable, String errorResponse) {
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.onesignal.debug
2+
3+
import com.onesignal.OneSignal
4+
5+
data class OneSignalLogEvent(
6+
val level: OneSignal.LOG_LEVEL,
7+
val entry: String,
8+
)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.onesignal.debug
2+
3+
interface OneSignalLogListener {
4+
fun onLogEvent(event: OneSignalLogEvent)
5+
}

0 commit comments

Comments
 (0)