Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions loggliest/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.inrista.loggliest">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
</manifest>
39 changes: 35 additions & 4 deletions loggliest/src/main/java/com/inrista/loggliest/Loggly.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Process;
import android.os.SystemClock;
import android.util.Log;
Expand Down Expand Up @@ -111,6 +113,7 @@ public class Loggly {
private static final int MAX_SIZE_ON_DISK_MIN = 1000;
private static final int UPLOAD_INTERVAL_SECS_MIN = 5;
private static final int UPLOAD_INTERVAL_SECS_DEFAULT = 900;
private static final boolean UPLOAD_ON_WIFI_ONLY_DEFAULT = false;
private static final int UPLOAD_INTERVAL_LOG_COUNT_MIN = 1;
private static final int UPLOAD_INTERVAL_LOG_COUNT_DEFAULT = 500;
private static final int IDLE_SECS_MIN = 0;
Expand All @@ -126,6 +129,7 @@ public class Loggly {
private static String mToken;
private static String mLogglyTag;
private static int mUploadIntervalSecs;
private static boolean mUploadOnWifiOnly;
private static int mUploadIntervalLogCount;
private static int mIdleSecs;
private static boolean mAppendDefaultInfo;
Expand Down Expand Up @@ -153,6 +157,7 @@ public static class Builder {
private String logglyTag;
private String logglyUrl;
private int uploadIntervalSecs = UPLOAD_INTERVAL_SECS_DEFAULT;
private boolean uploadOnWifiOnly = UPLOAD_ON_WIFI_ONLY_DEFAULT;
private int uploadIntervalLogCount = UPLOAD_INTERVAL_LOG_COUNT_DEFAULT;
private int idleSecs = IDLE_SECS_DEFAULT;
private boolean appendDefaultInfo = APPEND_DEFAULT_INFO_DEFAULT;
Expand Down Expand Up @@ -196,6 +201,15 @@ public Builder uploadIntervalSecs(int seconds) {
return this;
}

/**
* Set if Loggly uploads should only occur when connected to wifi.
* @param uploadOnWifiOnly If wifi should be required.
*/
public Builder uploadOnWifiOnly(boolean uploadOnWifiOnly) {
this.uploadOnWifiOnly = uploadOnWifiOnly;
return this;
}

/**
* Set the interval between Loggly log uploads. Note that small intervals
* drains the battery if you log many messages. If not specified this
Expand Down Expand Up @@ -284,7 +298,7 @@ public Loggly init() {
synchronized (Loggly.class) {
if (mInstance == null) {
mInstance = new Loggly(context, token, logglyTag, logglyUrl,
uploadIntervalSecs, uploadIntervalLogCount, idleSecs,
uploadIntervalSecs, uploadOnWifiOnly, uploadIntervalLogCount, idleSecs,
appendDefaultInfo, stickyInfo, maxSizeOnDisk);
}
}
Expand Down Expand Up @@ -313,13 +327,14 @@ public static Builder with(Context context, String token) {
}

private Loggly(Context context, String token, String logglyTag, String logglyUrl,
int uploadIntervalSecs, int uploadIntervalLogCount, int idleSecs,
int uploadIntervalSecs, boolean uploadOnWifiOnly, int uploadIntervalLogCount, int idleSecs,
boolean appendDefaultInfo, HashMap<String, String> stickyInfo, int maxSizeOnDisk) {

mContext = context;
mToken = token;
mLogglyTag = logglyTag;
mUploadIntervalSecs = uploadIntervalSecs;
mUploadOnWifiOnly = uploadOnWifiOnly;
mUploadIntervalLogCount = uploadIntervalLogCount;
mIdleSecs = idleSecs;
mAppendDefaultInfo = appendDefaultInfo;
Expand Down Expand Up @@ -373,8 +388,7 @@ public void run() {
logBatch.clear();
}

if((now - mLastUpload) >= mUploadIntervalSecs
|| mLogCounter >= mUploadIntervalLogCount) {
if(shouldUpload(now)) {
postLogs();
}

Expand All @@ -394,6 +408,23 @@ public void run() {

mThread.start();
}

private static boolean shouldUpload(long now) {
if (mUploadOnWifiOnly) {
if (mContext == null) {
return false;
}

ConnectivityManager manager = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (networkInfo.isConnected()) {
return false;
}
}

return (now - mLastUpload) >= mUploadIntervalSecs ||
mLogCounter >= mUploadIntervalLogCount;
}

private static void log(JSONObject jsonObject) {
if(!mThread.isAlive())
Expand Down